为了跳过初始 SSH 协商,我在文件中添加了要连接的服务器的公钥known_hosts
,如下所示这些建议。
但是,当尝试连接到服务器时,似乎无法识别:
user@hostname:~$ ssh -p SERVER_PORT other@SERVER_IP
The authenticity of host '[SERVER_IP]:SERVER_PORT ([SERVER_IP]:SERVER_PORT)' can't be established.
ECDSA key fingerprint is SHA256:prZ6ezy5sWx+LUEXw5MQzJcbQci6Ji97vnS5Q0izSH0.
Are you sure you want to continue connecting (yes/no)?
我该如何解决呢?
更新:
ssh
使用启动-vvv
,我可以看到以下行:
debug1: Server host key: ecdsa-sha2-nistp256 SHA256:prZ6ezy5sWx+LUEXw5MQzJcbQci6Ji97vnS5Q0izSH0
我在其中known_hosts
添加了:
SERVER_IP_HASH ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDLoZMOumyWDus/tR2B1B3Hkk6EYBYpzcLxYOliVypmSGtzXBNVikF8Gh/hB1/7H6v+aUNee//GID5p5w6xTIm1CTO8qhzH6hUdnLIv42QLWoEqKagAYvnGzElLf2s/JEcFzMEqRmzqXbD8Gk7hQdCFF/Ral4b+LBB7Ul2/KjrhjmH6u8hUwNZAx1mHtguyBRTP9EAuJlSl5e2GQq4AjpPBQJPnVAZugjdtisMjlWoZ9kwavqNhj9O0C6/vh/WpXDk6khVsm5yf6HyAHDpbau2lpWuNrEPeMZQat27nXzw7YMvETyCtjnrbflOI03PLrpugR3FBGKiio3k1Mh7tfOGpKNkUyN5uLOEs9cyGQTkPX7YQmk8liHy26R5rG80dLjVQ/09fbzZrp+s+tqQW2vNDJ9T3UzFBbA3LlVZYgUR8U0YS+LPVOPQmYmhc39NQcenO5BYzqKS99VGLoSUrm0k+2ll+ExGDCiTCiFWjUX2J+SSVXhoaH2PpQFPwDIE8diM+EGEeALFUuWV/1q2Djd25ZWvZAQpcXOpRhD1+xR+y5/UZKwpqHyxrHxGMozfwa+JjbY13RRJSxZXnfAPiazqw1A10e5gpPctyTw9z8fx+vwhwB5NgcE5dAz4278Ni7kijd4W93K5cUQFoN+9lK1FVufYThMTIRWFKcE5wG5CSKw== COMMENT
答案1
一台服务器可以有多个主机密钥。在您的情况下,您已指定 RSA 主机密钥,但服务器向您提供 ECDSA 主机密钥。由于这些不是相同的主机密钥,因此系统会提示您。
通常,OpenSSH 更喜欢已经拥有密钥的主机密钥算法,而不是没有密钥的主机密钥算法,因此这应该是开箱即用的。但是,如果您已显式配置该HostKeyAlgorithms
选项,OpenSSH 将尊重它并首选您指定的算法。您可以查看您的~/.ssh/config
文件和/etc/ssh/ssh_config
文件以查看是否是这种情况,如果是这样,请向您的~/.ssh/config
文件添加一个条目,如下所示:
# Update with the real IP address.
Host 192.0.2.1
HostKeyAlgorithms rsa-sha2-512,rsa-sha2-256,ssh-rsa
ssh-rsa
请注意,这会启用 SHA-1 签名 ( ),您应尽可能避免使用该签名。如果您知道服务器支持 SHA-2 签名,则可以将其删除。
也可能是您明确添加的条目不正确。有些系统(例如 Debian)使用散列条目,而其他系统则不使用。您必须检查相同的配置文件HashKnownHosts
并相应地调整条目。您可以使用ssh-keygen -F 192.0.2.1 -l
(替换 IP 地址)来查看该条目是否匹配。