我使用 ssh 公钥登录一台运行 OpenSSH 5.9p1 的非常老旧的 Linux 机器,在过去十年中一切正常。不过最近,我更新了工作机器的操作系统(现在运行的是 OpenSSH 9.0),现在公钥登录失败并出现错误send_pubkey_test: no mutual signature algorithm
。我可以使用密码进入,但我需要公钥身份验证才能工作。怎么才能说服两个OpenSSH好好玩呢?
细节:
我可以重新配置任一盒子的 OpenSSH,并创建和添加密钥,但我无法更新任一版本的 OpenSSH。旧的 Linux 机器的安全性相对不重要,我禁用了远程 ssh 到我的工作机器(这是我的笔记本电脑)。
nmap --script ssh2-enum-algos -sV -p 22 WW.XX.YY.ZZ
这是我自己的机器和 Linux 机器的输出。两者中都存在的行都标有(*)
。首先是我的工作机器:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.0 (protocol 2.0)
| ssh2-enum-algos:
| kex_algorithms: (10)
| curve25519-sha256
| [email protected]
| diffie-hellman-group-exchange-sha256 (*)
| diffie-hellman-group14-sha256
| diffie-hellman-group16-sha512
| diffie-hellman-group18-sha512
| ecdh-sha2-nistp256
| ecdh-sha2-nistp384
| ecdh-sha2-nistp521
| [email protected]
| server_host_key_algorithms: (4)
| ecdsa-sha2-nistp256
| rsa-sha2-256
| rsa-sha2-512
| ssh-ed25519
| encryption_algorithms: (6)
| aes128-ctr (*)
| [email protected]
| aes192-ctr (*)
| aes256-ctr (*)
| [email protected]
| [email protected]
| mac_algorithms: (10)
| hmac-sha1 (*)
| [email protected]
| hmac-sha2-256 (*)
| [email protected]
| hmac-sha2-512 (*)
| [email protected]
| [email protected]
| [email protected] (*)
| [email protected]
| [email protected]
| compression_algorithms: (2)
| none (*)
|_ [email protected] (*)
现在是 Linux 盒子:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 5.9p1 (protocol 2.0; HPN-SSH patch 13v11)
| ssh2-enum-algos:
| kex_algorithms: (4)
| diffie-hellman-group-exchange-sha1
| diffie-hellman-group-exchange-sha256 (*)
| diffie-hellman-group1-sha1
| diffie-hellman-group14-sha1
| server_host_key_algorithms: (2)
| ssh-dss
| ssh-rsa
| encryption_algorithms: (13)
| 3des-cbc
| aes128-cbc
| aes128-ctr (*)
| aes192-cbc
| aes192-ctr (*)
| aes256-cbc
| aes256-ctr (*)
| arcfour
| arcfour128
| arcfour256
| blowfish-cbc
| cast128-cbc
| [email protected]
| mac_algorithms: (11)
| hmac-md5
| hmac-md5-96
| hmac-ripemd160
| [email protected]
| hmac-sha1 (*)
| hmac-sha1-96
| hmac-sha2-256 (*)
| hmac-sha2-256-96
| hmac-sha2-512 (*)
| hmac-sha2-512-96
| [email protected] (*)
| compression_algorithms: (2)
| none (*)
|_ [email protected] (*)
建议?(谢谢。)
当前的 OpenSSH 要求使用基于 SHA2 的签名来完成 RSA 密钥身份验证,而您的服务器仅支持 SHA1 根据原始规范。(“ssh-rsa”密钥格式仍然相同,但现代客户端和服务器额外协商 RSA 签名模式作为一个单独的步骤。)
目前,OpenSSH 仍然支持 RSA-SHA1,但默认情况下是禁用的;
ssh -o
您可以使用或选项在客户端机器上启用它.ssh/config
:在大多数情况下,您还需要客户端在验证其主机密钥时接受来自服务器的 RSA-SHA1 签名:
如果需要,您可以通过将以下内容添加到客户端的 .ssh/config 来将这些安全性较低的选项限制为一组特定的机器:
对于更老的系统,使用 PuTTY——它的
plink
CLI SSH 客户端几乎可以连接到任何东西。