Linux/Unix:禁用OpenSSH主机密钥检查
我有一台运行OpenSSH远程登录服务的远程Unix服务器。
openssh配置为使用ssh密钥进行无密码登录。
我们的ISP允许将所有Linux服务器引导到救援模式。
它使我们能够使服务器远程联机,以排除通常只能通过OS Reload解决的系统问题(例如意外删除文件或错误的防火墙配置阻止ssh访问)。
当服务器启动进入远程救援模式时,我可以使用SSH连接。
在救援模式下,它们的SSH密钥将有所不同,因此每次启动时都会重新生成SSH密钥,因此我收到密钥不匹配的消息:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
e1:9b:5c:16:a6:cd:11:10:3a:cd:1b:a2:16:cd:e5:1c.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:1
RSA host key for www.cyberciti.biz has changed and you have requested strict checking.
Host key verification failed.
使用ssh登录时,如何在Apple OS X笔记本电脑上忽略OpenSSH hos密钥检查?
UserKnownHostsFile选项定义用于用户主机密钥数据库的文件,而不是默认的~/.ssh/known_hosts。
您可以将其设置为/dev/null。
必须将StrictHostKeyChecking设置为no,以便ssh会自动将新的主机密钥添加到用户已知的主机文件中。
如果将此标志设置为ask,则仅在用户确认他们确实要执行的操作之后,新的主机密钥才会添加到用户已知的主机文件中,并且ssh将拒绝连接其主机密钥已更改的主机。
在所有情况下,都会自动验证已知主机的主机密钥。
参数必须是,否或询问。
默认设置为询问。
语法如下:
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected] ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected] ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no [email protected] ssh -o UserKnownHostsFile=/dev/null,StrictHostKeyChecking=no [email protected]
"警告!"这些示例演示了一个非常严重的安全问题。
我强烈建议您使用ssh-keygen命令以安全的方式解决此问题。
您可以如下定义bash shell别名:
alias newssh='ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
您可以使用以下命令:
newssh [email protected] newssh [email protected]
关于rsync命令的注意事项
语法如下:
rsync -e 'ssh -o UserKnownHostsFile=/dev/null,StrictHostKeyChecking=no' -avr filename [email protected]:/path/to/dest rsync -e 'ssh -o UserKnownHostsFile=/dev/null,StrictHostKeyChecking=no' -avr /path/to/src [email protected]:/path/to/dest
就像我之前说的那样,这可能会导致安全问题,因此将-R选项传递给ssh-keygen命令可以从known_hosts文件中删除所有属于主机名的密钥。
此选项对于删除哈希主机很有用。
如果您的远程主机名是www.theitroad.local,请执行:
$ host www.theitroad.local $ ssh-keygen -R www.theitroad.local $ ssh-keygen -R 1.2.3.4