OpenSSH (ver 8系) による SHA-1 関連の接続許可

新しい 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
OpenSSH 設定一覧

設定は 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 できない