新しい OpenSSH (ver 8以降?) では SHA-1 まで対応となる古い機器 (Cisco Catalyst 3560) などに SSH 接続できない。そのため、 SHA-1 に関連する設定を許可することで接続が可能となる。
古い Cisco 機器 (Catalyst 3560) に対する接続問題
以下のように Ubuntu 22.04 の OpenSSH (ver 8.9) から SSH 接続を実施すると接続ができない。
$ ssh -V
OpenSSH_8.9p1 Ubuntu-3ubuntu0.4, OpenSSL 3.0.2 15 Mar 2022
$ ssh -l admin 192.168.240.223
Unable to negotiate with 192.168.240.223 port 22: no matching key exchange method found.
Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
この時 Catalyst 側にもログが表示される。
Nov 27 2023 20:22:00 JST: %SSH-3-NO_MATCH: No matching cipher found:
client chacha20-poly1305@openssh.com,aes128-ctr,aes192-ctr,aes256-ctr,
aes128gcm@openssh.com, aes256-gcm@openssh.com
server aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
この時 Catalyst 側の SSH 設定は以下となる。
C3560# show running-config
username admin privilege 15 secret 5 ********
no aaa new-model
ip domain-name net.home
ip ssh version 2
line vty 0 4
exec-timeout 30 0
logging synchronous
login local
exec prompt timestamp
transport input ssh
line vty 5 15
login
transport input none
!
C3560# show crypto key mypubkey rsa
% Key pair was generated at: 20:26:03 JST Nov 24 2023
Key name: C3560.net.home
Key type: RSA KEYS
Storage Device: private-config
Usage: General Purpose Key
Key is not exportable.
Key Data:
***(略)***
% Key pair was generated at: 09:00:54 JST Mar 1 1993
Key name: C3560.net.home.server
Key type: RSA KEYS
Temporary key
Usage: Encryption Key
Key is not exportable.
Key Data:
***(略)***
C3560# show ip ssh
SSH Enabled - version 2.0
Authentication timeout: 120 secs; Authentication retries: 3
Minimum expected Diffie Hellman key size : 1024 bits
IOS Keys in SECSH format(ssh-rsa, base64 encoded):
ssh-rsa ***(略)***
OpenSSH の設定
OpenSSH で接続できるようにするための設定は以下の一覧となる。(鍵交換アルゴリズムだけ設定してもさらに不足のエラーが表示される)
対象ホスト (任意) | 192.168.0.0/16 |
鍵交換アルゴリズム (KexAlgorithms) | diffie-hellman-group-exchange-sha1 diffie-hellman-group14-sha1 diffie-hellman-group1-sha1 |
ホスト公開鍵アルゴリズム (HostkeyAlgorithms) | ssh-rsa |
暗号化方式 (Ciphers) | aes128-cbc 3des-cbc aes192-cbc aes256-cbc |
設定は Linux 側の各ユーザ単位で行う。
(システム全体に設定する場合は【/etc/ssh/ssh_config.d/】にファイル作成する)
$ cd ~/
$ vim .ssh/config
Host 192.168.*
KexAlgorithms +diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
HostkeyAlgorithms +ssh-rsa
Ciphers +aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
上記設定後は SSH 接続が可能となる
$ ssh -l admin 192.168.240.223
(admin@192.168.240.223) Password: ******
C3560#
おまけ
OpenSSH クライアントのログより設定を行っていくと、以下のようにさらに設定不足のログが表示される。
$ sudo vim /etc/ssh/ssh_config.d/permit_sha1.conf
Host 192.168.*
KexAlgorithms +diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
$ ssh -l admin 192.168.240.223
Unable to negotiate with 192.168.240.223 port 22: no matching host key type found. Their offer: ssh-rsa
$ sudo vim /etc/ssh/ssh_config.d/permit_sha1.conf
Host 192.168.*
KexAlgorithms +diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
HostkeyAlgorithms +ssh-rsa
$ ssh -l admin 192.168.240.223
Unable to negotiate with 192.168.240.223 port 22: no matching cipher found. Their offer: aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
$ sudo vim /etc/ssh/ssh_config.d/permit_sha1.conf
Host 192.168.*
KexAlgorithms +diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1
HostkeyAlgorithms +ssh-rsa
Ciphers +aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc
$ ssh -l admin 192.168.240.223
(admin@192.168.240.223) Password: ******
C3560#
【参考URL】
OpenSSHの暗号化周りの設定について
KexAlgorithms が合わなくて Cisco に SSH できない