第一次通过SSH使用公钥/私钥连接到计算机时,如何跳过“known_host”问题? [重复]


Answers:


28

所有其他当前答案都缺少UserKnownHostsFile = / dev / null

如果您只想在使用后执行此操作:

ssh -o StrictHostKeychecking=no hostname

如果你想重复这样做,你应该在〜/ .ssh / config中添加如下内容

Host 192.168.0.*
    StrictHostKeyChecking no
    UserKnownHostsFile=/dev/null

要在OpenSSH for Windows上进行配置,只需替换即可 /dev/nullNUL

好的解释来自: http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html


1
我一直在寻找过滤子网几个月(不是主动),这正是我一直想要的。我们有一个带有dhcp的小型开发网络,我们的设备总是获得新的IP地址,这使得连接它们变得更容易。谢谢!
Adam Lewis

13

StrictHostKeyChecking 通过 ssh_config 或命令行选项。


/ etc / ssh / ssh_config或〜/ .ssh / config ---或者Windows上的等价物,如果这是你的客户端平台
Doug Harris

2
$ ssh -o StrictHostKeychecking=no hostname

这将导致跳过检查,并在首次登录时自动添加远程主机的密钥。 (还有CheckHostIP选项,但它实际上似乎没有禁用检查是否存在密钥)。


2
我也喜欢使用UserKnownHostsFile,以便在我的系统上不记住签名。一个很好的技巧: ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeychecking=no hostname
metavida

2

这花了我一段时间才找到。我见过的最常见的用例是当你有ssh隧道到远程网络时。这里的所有解决方案都产生了警告,这些警告破坏了我的脚本(nagios)。

我需要的选项是:

NoHostAuthenticationForLocalhost yes

其中,顾名思义也只适用于localhost。


1

您可以获取公钥,将其添加到known_hosts文件,然后重新发送它:

ssh-keyscan -t rsa hostname >> .ssh/known_hosts
ssh-keygen -H
rm .ssh/known_hosts.old

0

您可以禁用检查,但当然不太安全。在理想情况下,您应该做的是让已经有权访问该计算机的人抓住它的公共主机密钥并告诉ssh使用它。即:取输出:

cat /etc/ssh/ssh_host_rsa_key.pub

预先添加计算机的主机名,并将该行添加到计算机上的〜/ .ssh / known_hosts文件中。你会得到一些看起来像的东西:

myhost.example.com ssh-rsa AAAAB3Netc ...

或者,如果您只想获取密钥的指纹,这可能更容易通过有限的带宽通道(如电话呼叫)进行传输,您可以让您的帮助程序运行:

ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub

0

如果您只想暂时禁用主机检查,那么您可以登录到LiveCD系统,例如重命名 ~/.ssh/known_hosts 做其他事情,然后在你完成后再改回来。


-2
  1. 将“StrictHostKeyChecking no”添加到/ etc / ssh / ssh_config
  2. cd~ / .ssh
  3. rm known_hosts
  4. ln -s / dev / null known_hosts

答对了


1
你确实知道这个问题应该防止什么样的攻击,对吗?
vonbrand
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.