事象内容
CNC が NSO に NETCONF 経由で接続する際に、下記画像のように Reachability が Degraded となる場合があります。
Connectivity Type の "i" アイコンをクリックすると、NETCONF 経由での接続が Unreachable となっていることが確認可能です。
トラブルシューティング
以下の CNC サーバのログから、SSH Handshake における Key-exchange に失敗していることが確認できます。
/mnt/cw_logfs/robot-dlminvmgr/1/dlminvmgr_stdout.log
time="2022-07-05 15:06:01.474381" level=info msg="[Reachability status for cnc-nso : CONN_STATE_DEGRADED ;ssh: handshake failed: ssh: no common algorithm for key exchange; client offered: [curve25519-sha256@libssh.org ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 diffie-hellman-group14-sha1 diffie-hellman-group1-sha1], server offered: [diffie-hellman-group14-sha256 diffie-hellman-group18-sha512]]" tag=ROBOT_dlmInvMgr_robot-dlminvmgr-5c578c6c99-2lxjx
対処策
NSO 側で Key-exchange algorithm を追加することで対処可能です。
CNC 3.0 以降では ecdh-sha2-nistp256 を使用することが推奨されます。
それ以前の version では非サポートとなりますので、diffie-hellman-group14-sha1 を追加することでこの事象が解消されます。
<Step 1: 設定の追加>
NSO 上で /etc/ncs/ncs.conf に以下を追加します
<ssh>
<algorithms>
<kex>diffie-hellman-group14-sha1</kex>
<mac>hmac-sha2-512,hmac-sha2-256,hmac-sha1</mac>
<encryption>aes128-ctr,aes192-ctr,aes256-ctr</encryption>
</algorithms>
</ssh>
インデントレベルは <log> や <aaa> と同じレベルで設定する必要があります。
CNC 3.0 以降では、以下の設定を追加してください。
<ssh>
<algorithms>
<kex>ecdh-sha2-nistp256</kex>
<mac>hmac-sha2-512,hmac-sha2-256,hmac-sha1</mac>
<encryption>aes128-ctr,aes192-ctr,aes256-ctr</encryption>
</algorithms>
</ssh>
<Step 2: NSO の再起動>
下記のコマンドを実行し、設定変更の反映のために NSO を再起動します。
sudo systemctl stop ncs
sudo systemctl start ncs