我在 Windows 10 上使用 openssh 客户端。它通常运行良好,但有些机器不允许我连接。作为一种解决方法,我可以使用其他 ssh 客户端(如 putty 或 teraterm)连接到这些机器,但我会真的喜欢在windows ssh客户端上进行标准化。
事情的经过如下:
C\U\t> ssh [email protected]
Unable to negotiate with 10.100.149.86 port 22: no matching cipher found.
Their offer: 3des-cbc,blowfish-cbc,aes128-cbc,aes192-cbc,aes256-cbc,
cast128-cbc,arcfour,arcfour128,arcfour256
据推测,这意味着我尝试连接的机器只需要某些类型的密码,并且它已将这些密码列给我。
这(合理吗?)让我想到我可以配置我的客户端以接受任何/所有这些密码。在谷歌上搜索后,我发现我可以在我的用户~/.ssh/config
文件中指定密码。
因此我创建并编辑了一个包含以下内容的配置文件...
Ciphers 3des-cbc,blowfish-cbc,aes128-cbc,aes192-cbc,aes256-cbc,cast128-cbc,arcfour,arcfour128,arcfour256
我的期望是,~/.ssh/config 中的上述行将允许我的 ssh 客户端使用远程机器提供的密码。
是吗?不!事情是这样的...
C\U\t> ssh [email protected]
C:\\Users\\someuser/.ssh/config line 1: Bad SSH2 cipher spec '3des-cbc,blowfish-cbc,aes128-cbc,aes192-cbc,aes256-cbc,cast128-cbc,arcfour,arcfour128,arcfour256'.
Ciphers
在此之后,我尝试了ssh 配置中该行的其他各种排列,省略了一些密码,将“,”替换为“”,等等。但都没有用。
我该如何修复这个问题?我不明白发生了什么。
无论如何,远程机器只是一个终端服务器。我想我可以更新它的固件,但除非迫不得已,否则我宁愿不去搞它。我只知道 ssh 加密通信,实际的密码名称对我来说只是胡言乱语。我知道有些比其他的强,但当我只想完成工作时,这实在是一个难以逾越的陷阱。
答案1
您的本地 OpenSSH 版本可能根本不支持其中一些密码,例如,我很确定 RC4(arcfour)和 CAST 早已消失,因此整个选项被拒绝。
但是,您只需要一个,而不是全部 - 因此只需将仍然可接受的 AES-CBC 添加到列表中。
注意:+
使用添加将密码添加到标准列表中,而不是覆盖它——你不想削弱与所有工作服务器的连接。(特别是兼容性问题是双向的,即如果你强迫你的客户端使用这个旧的密码列表,你会发现新的服务器也不再提供那些密码了……)
因此您需要的配置是:
Ciphers +aes128-cbc,aes256-cbc,3des-cbc
KexAlgorithms +diffie-hellman-group14-sha1
HostkeyAlgorithms +ssh-rsa
# If you authenticate using a keypair:
PubkeyAcceptedAlgorithms +ssh-rsa