用很老的openSSH公钥登录电脑

用很老的openSSH公钥登录电脑

我使用 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 – 它的plinkCLI SSH 客户端可以连接几乎任何东西。

相关内容