尝试通过 SCP 更新 CISCO SF200-24 启动代码,但我得到的只是
fatal: Unable to negotiate with <IP> port 5939: no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1 [preauth]
但是我的 SSH
$ ssh -V
OpenSSH_7.2p2, OpenSSL 1.0.2h 3 May 2016
确实为他们提供了 AFAICS:
$ ssh -Q kex
diffie-hellman-group1-sha1
diffie-hellman-group14-sha1
diffie-hellman-group-exchange-sha1
diffie-hellman-group-exchange-sha256
ecdh-sha2-nistp256
ecdh-sha2-nistp384
ecdh-sha2-nistp521
[email protected]
这让我抓狂,特别是当你每次尝试时都必须输入所有数据(SCP 主机的 IP、文件名等,一遍又一遍)那么问题出在哪里呢?
答案1
密钥交换方法
diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1
在最新版本的 OpenSSH 中已经过时,并且默认不提供。但您可以在命令行或在中指定ssh_config
以允许连接到旧服务器(思科)。
第一种方法是通过命令行:
scp -O KexAlgorithms=+diffie-hellman-group-exchange-sha1 host:file /local/path/
或更好~/.ssh/config
:
Host your.cisco.host (or IP)
KexAlgorithms +diffie-hellman-group-exchange-sha1
然后你就可以使用简单的连接
scp your.cisco.host:file /local/path/
编辑:ssh -Q kex
列表支持算法,而不是提供的算法。您实际上提供了使用以下算法的算法ssh -G host | grep kexalgorithms