问题描述
在对已部署的项目进行维护过程中,遇到的一个小问题,记录一下。
SSH连接云服务器ssh xxx@云服务器IP地址,提示:
The authenticity of host 'xxxxxx (xx.xxx.123.321)' can't be established.
ECDSA key fingerprint is SHA256:p3QHJXNIC1TJYWeIOttrVc98/R6BUFWu9/LiyKgXfFM.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Host key verification failed.
在上网查阅了相关资料,这是ssh连接的一种保护机制,本地主机在连接前会进行验证,我是由于更换了ssh密钥发生了这个问题
,按照网上说的直接敲回车yes无效。
又尝试了再次更换密钥,结果并没有什么用。
再尝试了多种方法之后终于解决了这个问题,下面总结了两种我尝试过可行的解决办法。
解决办法
第一种
就是在ssh连接过程中直接去掉主机验证
只需要在ssh命令后面加上 “-o StrictHostKeyChecking=no” 参数即可,比如(用ssh连接github作为测试)
ssh -T git@github.com
----->
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ECDSA key fingerprint is SHA256:p2QAMXNIC1TJYWeIOttrVc98/R1BUFWu3/LiyKgUfQM.
Are you sure you want to continue connecting (yes/no/[fingerprint])?
Host key verification failed.
输入变为
ssh -T git@github.com -o StrictHostKeyChecking=no
----->
Warning: Permanently added 'github.com,20.205.243.166' (ECDSA) to the list of known hosts.
Hi xxxx! You've successfully authenticated, but GitHub does not provide shell access.
可以看到就ssh连接成功了
第二种
给本地的known_hosts文件中添加连接验证
在命令行中输入"ssh-keyscan -t rsa 服务器ip >> xxxx\ .ssh\known_hosts" (xxxx为你的ssh文件路径),例如
ssh-keyscan -t rsa github.com >> C:\Users\asus\.ssh\known_hosts
----->
# github.com:22 SSH-2.0-babeld-dc5ec9be
添加成功后即可正常ssh连接