我使用 ssh 公钥登录一台运行 OpenSSH 5.9p1 的非常老旧的 Linux 机器,过去十年来一切都运行良好。然而,最近,我更新了我的工作机器的操作系统(现在运行的是 OpenSSH 9.0),现在公钥登录失败并出现错误send_pubkey_test: no mutual signature algorithm
。我可以用密码登录,但我需要公钥身份验证才能工作。我该如何让这两个 OpenSSH 很好地配合使用?
细节:
我可以重新配置任一盒子的 OpenSSH,并创建和添加密钥,但我无法更新任一版本的 OpenSSH。旧 Linux 机器的安全性相对不重要,而且我已禁用远程 ssh 进入我的工作机器(这是我的笔记本电脑)。
以下是我自己的机器和 Linux 机器的输出nmap --script ssh2-enum-algos -sV -p 22 WW.XX.YY.ZZ
。 两者中都存在的行都标有(*)
。 首先是我的工作机器:
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] (*)
有什么建议吗?(谢谢。)
答案1
当前的 OpenSSH 要求使用基于 SHA2 的签名进行 RSA 密钥身份验证,而您的服务器仅支持原始规范中的 SHA1。(“ssh-rsa”密钥格式仍然相同,但现代客户端和服务器另外协商 RSA 签名模式作为单独的步骤。)
目前,OpenSSH 仍然支持 RSA-SHA1,但默认情况下处于禁用状态;您可以使用ssh -o
或.ssh/config
选项在客户端计算机上启用它:
PubkeyAcceptedAlgorithms +ssh-rsa
在大多数情况下,你还需要客户端接受 RSA-SHA1 签名从当服务器正在验证其主机密钥时:
HostKeyAlgorithms +ssh-rsa
如果需要,您可以通过在客户端的 .ssh/config 中添加以下内容,将这些不太安全的选项限制到特定的一组机器:
Host 10.3.4.*
PubkeyAcceptedAlgorithms +ssh-rsa
HostKeyAlgorithms +ssh-rsa
对于更旧的系统,请使用 PuTTY – 它的plink
CLI SSH 客户端可以连接几乎任何东西。