如何避免 SSH 对已知主机的主机验证?

sha*_*nuo 222 linux ssh

每次尝试使用 SSH 连接服务器时,都会收到以下提示。我输入“是”,但是有没有办法避免这个?

The authenticity of host '111.222.333.444 (111.222.333.444)' can't be established.
RSA key fingerprint is f3:cf:58:ae:71:0b:c8:04:6f:34:a3:b2:e4:1e:0c:8b.
Are you sure you want to continue connecting (yes/no)? 
Run Code Online (Sandbox Code Playgroud)

小智 298

使用-o选项,

ssh -o "StrictHostKeyChecking no" user@host
Run Code Online (Sandbox Code Playgroud)

  • 在我的计算机上,相关的手册页(“man 5 ssh_config”)表示“no”有更多替代方案,包括“accept-new”,其中 ssh“会自动将新的主机密钥添加到用户已知的主机文件中,但会不允许连接到主机密钥已更改的主机。” 这看起来在很多情况下仍然可以解决这个问题,同时更安全。(还有“yes”,它会跳过提示并拒绝未知和已更改的主机。“off”与“no”相同,“ask”是默认值,会进行提示。) (3认同)
  • 使用备用身份文件有什么用?我的意思是,如果您连接到受感染的主机,那么您的身份验证方式有何不同 - 这不像受感染的主机也可以窃取您的密钥。 (2认同)

Jim*_*red 139

将以下行添加到/etc/ssh/ssh_config...的开头

Host 192.168.0.*
   StrictHostKeyChecking no
   UserKnownHostsFile=/dev/null
Run Code Online (Sandbox Code Playgroud)

选项:

  • 主机子网可以*允许不受限制地访问所有 IP。
  • 编辑/etc/ssh/ssh_config全局配置或~/.ssh/config用户特定配置。

http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html

  • 哈!告诉我的妻子。 (44认同)
  • 可惜我只能给你点赞。将KnownHosts 设置为/dev/null 是天才。 (3认同)
  • 你是最聪明的一个。 (2认同)

Pau*_*l R 31

您应该只在第一次连接到新主机时获得此信息。响应后yes,主机将被存储,~/.ssh/known_hosts下次连接时不会收到提示。

请注意,如果~/.ssh/known_hosts由于任何原因(例如权限问题)无法写入,那么您每次连接时都会收到提示。

  • 问题是有没有办法避免提示? (9认同)
  • 须藤 chown -R 用户:用户 .ssh ;须藤 chmod 700 .ssh; 须藤 chmod -R 600 .ssh/ ; ssh-keygen -R $hostname 并重新连接应该可以解决所有问题,并且只有在 ssk_Hostkey 被弄脏时才会重新提示 | 改变了或者你是中间人的受害者。 (2认同)

sle*_*ske 11

最好的方法(因为它不会牺牲安全性)是从一个客户端连接到所有计算机一次(每次都会提示您,总是回答是)。正如在另一个答案中指出的那样,密钥将存储在 ~/.ssh/known_hosts 中。然后将此文件复制到您以后可能想要连接的每台客户端计算机(可能是您使用的每个用户帐户)。然后所有这些帐户将“知道”计算机,因此没有提示。

与仅禁用提示相比的优势在于,SSH 实际上可以检查是否存在 MITM 攻击。