概要
このドキュメントでは、NCS1Kプラットフォームでのセキュアシェル(SSH)の基本的なトラブルシューティング方法について説明します。
前提条件
このドキュメントは、Network Convergence System(NCS)1002などのデバイス上のXRベースのオペレーティングシステムに習熟していることを前提としています。
要件
SSH接続の要件に関する次の項目に関する知識があることが推奨されます。
- XRイメージに関連するk9secパッケージ
- Ciscoデバイスに存在するSSH設定
- ホストとサーバ間のキー生成、キー交換、および暗号ネゴシエーションの成功
使用するコンポーネント
このドキュメントの情報は、次のソフトウェアとハードウェアのバージョンに基づいています。
- XR 7.3.1を搭載したNCS1002
- NCS1004(XR7.9.1を搭載)
このドキュメントの情報は、特定のラボ環境にあるデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、クリアな(デフォルト)設定で作業を開始しています。本稼働中のネットワークでは、各コマンドによって起こる可能性がある影響を十分確認してください。
インストール済みパッケージの確認
コマンド show install active
と show install committed
k9secパッケージの存在を確認します。このパッケージがインストールされていないと、SSHセッションを開始するための暗号キーを生成できません。
RP/0/RP0/CPU0:NCS1002_1# show install active
Wed Jul 19 09:31:18.977 UTC
Label : 7.3.1
Node 0/RP0/CPU0 [RP]
Boot Partition: xr_lv58
Active Packages: 4
ncs1k-xr-7.3.1 version=7.3.1 [Boot image]
ncs1k-mpls-te-rsvp-3.1.0.0-r731
ncs1k-mpls-2.1.0.0-r731
ncs1k-k9sec-3.1.0.0-r731
RP/0/RP0/CPU0:NCS1002_1# show install committed
Wed Jul 19 09:31:37.359 UTC
Label : 7.3.1
Node 0/RP0/CPU0 [RP]
Boot Partition: xr_lv58
Committed Packages: 4
ncs1k-xr-7.3.1 version=7.3.1 [Boot image]
ncs1k-mpls-te-rsvp-3.1.0.0-r731
ncs1k-mpls-2.1.0.0-r731
ncs1k-k9sec-3.1.0.0-r731
コンフィギュレーション
少なくとも、NCS1Kには次の設定が必要です ssh server v2
SSH接続を許可します。 show run ssh
この設定が存在することを確認するには、次の手順を実行します。
RP/0/RP0/CPU0:NCS1004_1# show run ssh
Wed Jul 19 13:06:57.207 CDT
ssh server rate-limit 600
ssh server v2
ssh server netconf vrf default
生成されたキーの識別
SSHセッションを確立するには、NCS1Kに公開暗号キーが存在する必要があります。生成されたキーの存在の特定 show crypto key mypubkey { dsa | ecdsa | ed25519 | rsa }
を参照。デフォルトのキータイプは次のとおりです rsa
を参照。キーは16進数の文字列として表示され、ここではセキュリティ上の理由から省略します。
RP/0/RP0/CPU0:NCS1002_1# show crypto key mypubkey rsa
Wed Jul 19 10:30:09.333 UTC
Key label: the_default
Type : RSA General purpose
Size : 2048
Created : 11:59:56 UTC Tue Aug 23 2022
Data : <key>
特定のタイプのキーを生成するには、コマンドを入力します crypto key generate { dsa | ecdsa | ed25519 | rsa }
キーモジュラスを選択します。モジュラスサイズはアルゴリズムによって異なります。
キーの種類 |
許容モジュラス/曲線タイプ |
デフォルトのモジュラス長(ビット) |
DSA |
512、768、1024 |
1024 |
ecdsa |
nips256、nips384、nips521 |
none |
ed25519 |
256 |
256 |
rsa |
512 ~ 4096 |
2048 |
次のコマンドでキーが正常に生成されたことを確認します。 show crypto key mypubkey
を参照。
既存のキーを削除するには、コマンドを入力します crypto key zeroize { authentication | dsa | ecdsa | ed25519 | rsa } [ label ]
を参照。暗号キーを使用せずにデバイスから切断すると、SSHを使用したアクセスがブロックされるため、他の手段でデバイスにアクセスできることを確認します。
SSHサーバ機能の特定
サーバとホストは、SSHセッションを確立する前に、鍵交換、ホスト鍵、および暗号について合意する必要があります。NCS1Kプラットフォームの機能を確認するには、次のコマンドを入力します show ssh server
を参照。
RP/0/RP0/CPU0:NCS1004_1# show ssh server
Wed Jul 19 13:28:04.820 CDT
---------------------
SSH Server Parameters
---------------------
Current supported versions := v2
SSH port := 22
SSH vrfs := vrfname:=default(v4-acl:=, v6-acl:=)
Netconf Port := 830
Netconf Vrfs := vrfname:=default(v4-acl:=, v6-acl:=)
Algorithms
---------------
Hostkey Algorithms := x509v3-ssh-rsa,ecdsa-sha2-nistp521,ecdsa-sha2-nistp384,ecdsa-sha2-nistp256,rsa-sha2-512,rsa-sha2-256,ssh-rsa,ssh-dsa,ssh-ed25519
Key-Exchange Algorithms := ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group14-sha1,curve25519-sha256,diffie-hellman-group14-sha256,diffie-hellman-group16-sha512,curve25519-sha256@libssh.org
Encryption Algorithms := aes128-ctr,aes192-ctr,aes256-ctr,aes128-gcm@openssh.com,aes256-gcm@openssh.com,chacha20-poly1305@openssh.com
Mac Algorithms := hmac-sha2-512,hmac-sha2-256,hmac-sha1
Authentication Method Supported
------------------------------------
PublicKey := Yes
Password := Yes
Keyboard-Interactive := Yes
Certificate Based := Yes
Others
------------
DSCP := 16
Ratelimit := 600
Sessionlimit := 64
Rekeytime := 60
Server rekeyvolume := 1024
TCP window scale factor := 1
Backup Server := Disabled
Host Trustpoint :=
User Trustpoint :=
Port Forwarding := Disabled
Max Authentication Limit := 20
Certificate username := Common name(CN)
ホストのSSH機能の特定
SSHセッションを確立するには、接続を試行するホストが、サーバからの少なくとも1つのホストキー、キー交換、および暗号化アルゴリズムと一致している必要があります。
PuTTY
PuTTYは、サポートされるキー交換、ホストキー、および暗号アルゴリズムを Connections > SSH
を参照。ホストは、自身の機能に基づいてアルゴリズムを自動的にネゴシエートし、ユーザの好みに応じてキー交換アルゴリズムを優先します。オプション Attempt GSSAPI key exchange
NCS1Kデバイスに接続するために必要ではありません。
PuTTY SSHオプションのスクリーンショット
Linux
Linuxサーバは通常、サポートされているアルゴリズムを /etc/ssh/ssh_config
出力を提供してください。この例は、Ubuntu Server 18.04.3に基づいています。
Host *
# ForwardAgent no
# ForwardX11 no
# ForwardX11Trusted yes
# PasswordAuthentication yes
# HostbasedAuthentication no
# GSSAPIAuthentication no
# GSSAPIDelegateCredentials no
# GSSAPIKeyExchange no
# GSSAPITrustDNS no
# BatchMode no
# CheckHostIP yes
# AddressFamily any
# ConnectTimeout 0
# StrictHostKeyChecking ask
# IdentityFile ~/.ssh/id_rsa
# IdentityFile ~/.ssh/id_dsa
# IdentityFile ~/.ssh/id_ecdsa
# IdentityFile ~/.ssh/id_ed25519
# Port 22
# Protocol 2
# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc,3des-cbc
# MACs hmac-md5,hmac-sha1,umac-64@openssh.com
# EscapeChar ~
# Tunnel no
# TunnelDevice any:any
# PermitLocalCommand no
# VisualHostKey no
# ProxyCommand ssh -q -W %h:%p gateway.example.com
# RekeyLimit 1G 1h
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
SSH接続のトラブルシューティング
これらのコマンドは、SSH接続の障害を切り分けるのに役立ちます。
現在の着信および発信SSHセッションを show ssh session details
を参照。
RP/0/RP0/CPU0:NCS1002_1# show ssh session details
Wed Jul 19 13:08:46.147 UTC
SSH version : Cisco-2.0
id key-exchange pubkey incipher outcipher inmac outmac
----------------------------------------------------------------------------------------------------
Incoming Sessions
128733 ecdh-sha2-nistp256 ssh-rsa aes256-ctr aes256-ctr hmac-sha2-256 hmac-sha2-256
128986 diffie-hellman-group14 ssh-rsa aes128-ctr aes128-ctr hmac-sha1 hmac-sha1
128988 diffie-hellman-group14 ssh-rsa aes128-ctr aes128-ctr hmac-sha1 hmac-sha1
Outgoing sessions
過去のSSHセッションには、コマンドによる接続試行の失敗が含まれます。 show ssh history detail
を参照。
RP/0/RP0/CPU0:NCS1002_1# show ssh history details
Wed Jul 19 13:13:26.821 UTC
SSH version : Cisco-2.0
id key-exchange pubkey incipher outcipher inmac outmac start_time end_time
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Incoming Session
128869diffie-hellman-group14-sha1ssh-rsa aes128-ctr aes128-ctr hmac-sha1 hmac-sha1 19-07-23 11:28:55 19-07-23 11:30:07
SSHトレースは、接続プロセスに関する詳細なレベルの情報を提供します。 show ssh trace all
を参照。
RP/0/RP0/CPU0:NCS1002_1# show ssh trace all
Wed Jul 19 13:15:53.701 UTC
3986 wrapping entries (57920 possible, 40896 allocated, 0 filtered, 392083 total)
Apr 29 19:13:19.438 ssh/backup-server/event 0/RP0/CPU0 t6478 [SId:=0] Respawn-count:=1, Starting SSH Server
Apr 29 19:13:19.438 ssh/backup-server/shmem 0/RP0/CPU0 t6478 [SId:=0] Shared memory does not exist during server start
SSHキー再生成の値の設定
SSHキー再生成の設定により、新しいキー交換が発生するまでの時間とバイト数が決まります。次の方法で現在の値を表示します show ssh rekey
を参照。
RP/0/RP0/CPU0:NCS1004_1# show ssh rekey
Wed Jul 19 15:23:06.379 CDT
SSH version : Cisco-2.0
id RekeyCount TimeToRekey(min) VolumeToRekey(MB)
----------------------------------------------------------
Incoming Session
1015 6 6.4 1024.0
1016 0 58.8 1024.0
Outgoing sessions
キー再生成ボリュームを設定するには、次のコマンドを使用します ssh server rekey-volume [ size ]
を参照。デフォルトのキー再生成サイズは1024 MBです。
RP/0/RP0/CPU0:NCS1004_1(config)# ssh server rekey-volume 4095
RP/0/RP0/CPU0:NCS1004_1(config)# commit
同様に、キー再生成タイマー値を ssh server rekey-time [ time ]
を参照。デフォルト値は 60 分です。
RP/0/RP0/CPU0:NCS1004_1(config)# ssh server rekey-time 120
RP/0/RP0/CPU0:NCS1004_1(config)# commit
SSH のデバッグ
「 debug ssh server
コマンドは、アクティブなSSHセッションおよび接続試行に関するリアルタイム出力を表示します。障害が発生した接続をトラブルシューティングするには、デバッグを有効にし、接続を試行してから、次のコマンドでデバッグを停止します。 undebug all
を参照。PuTTYまたは別のターミナルアプリケーションを使用してセッションをログに記録し、分析します。
RP/0/RP0/CPU0:NCS1002_1# debug ssh server
PuTTYには、SSHパケットをロギングする機能があります。 Session > Logging
を参照。
PuTTY SSHロギングのスクリーンショット
Linuxでは – ssh -vv
(非常に冗長)は、SSH接続プロセスに関する詳細情報を提供します。
ubuntu-18@admin:/$ ssh -vv admin@192.168.190.2
その他のログ
いくつかのshow techsは、SSHに関する有用な情報をキャプチャします。
show tech { ncs1k | ncs1001 | ncs1004 } detail
show tech crypto session
show tech ssh
admin show tech { ncs1k | ncs1001 | ncs1004 }-admin