40

我正在尝试制作一个自动将文件从一台服务器复制到多台服务器的系统。作为其中的一部分,我正在使用 rsync 并安装 SSH 密钥,它可以正常工作。

我的问题是,当它第一次尝试连接到新服务器时,它会要求确认。有没有办法自动接受?

示例命令/输出:

rsync -v -e ssh * root@someip:/data/
The authenticity of host 'someip (someip)' can't be established.
RSA key fingerprint is somerandomrsakey.
Are you sure you want to continue connecting (yes/no)? yes
4

3 回答 3

68

您可以像这样预先将此主机的密钥添加到 known_hosts:

ssh-keyscan $someip >> ~/.ssh/known_hosts
于 2013-08-08T11:06:23.453 回答
51

如果他们真的新主机,并且您不能known_hosts事先添加密钥(请参阅 York.Sar 的回答),那么您可以使用此选项:

-e "ssh -o StrictHostKeyChecking=no"
于 2013-08-08T10:26:56.607 回答
8

我知道这是 3 年前提出的,但这是我的谷歌搜索的顶部,我无法在 Vagrant 脚本中间获得这些解决方案中的任何一个来为我正常工作。所以我想把我在别处找到的方法放在这里。

那里的解决方案讨论了使用以下代码块更新~/.ssh/configor文件。/etc/ssh/ssh_config

要禁用特定主机的主机密钥检查(例如,remote_host.com):

Host remote_host.com
    StrictHostKeyChecking no

要为您连接到的所有主机关闭主机密钥检查:

Host *
    StrictHostKeyChecking no

为了避免主机密钥验证,并且不对 192.168.1.* 子网使用 known_hosts 文件:

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

我希望这可以帮助遇到此问题的其他人。

于 2017-01-12T15:31:04.863 回答