我们正在尝试加快 RAC 安装的 oracle 节点的安装速度。这要求我们安装并配置 ssh,这样它就不会提示输入密码。
问题是:第一次使用时,系统会提示我们
RSA key fingerprint is 96:a9:23:5c:cc:d1:0a:d4:70:22:93:e9:9e:1e:74:2f.
Are you sure you want to continue connecting (yes/no)? yes
有没有办法避免这种情况,或者我们注定要在每台服务器上手动连接至少一次?
答案1
2019 年 12 月更新:
正如 Chris Adams 在下面指出的那样,自此答案撰写以来的 6.5 年间,Openssh 发生了相当大的变化,并且有一个比以下原始建议安全得多的新选项:
* ssh(1): expand the StrictHostKeyChecking option with two new
settings. The first "accept-new" will automatically accept
hitherto-unseen keys but will refuse connections for changed or
invalid hostkeys. This is a safer subset of the current behaviour
of StrictHostKeyChecking=no. The second setting "off", is a synonym
for the current behaviour of StrictHostKeyChecking=no: accept new
host keys, and continue connection for hosts with incorrect
hostkeys. A future release will change the meaning of
StrictHostKeyChecking=no to the behaviour of "accept-new". bz#2400
StrictHostKeyChecking no
因此,不要在文件中设置,而是ssh_config
设置StrictHostKeyChecking accept-new
.
StrictHostKeyChecking no
在您的文件中设置/etc/ssh/ssh_config
,它将成为服务器上每个用户使用的全局选项。或者将其设置在您的~/.ssh/config
文件中,该文件将成为仅当前用户的默认值。或者您可以在命令行上使用它:
ssh -o StrictHostKeyChecking=no -l "$user" "$host"
以下是其工作原理的解释man ssh_config
(或参见这个更新的版本):
StrictHostKeyChecking
如果该标志设置为“yes”,SSH永远不会自动将主机密钥添加到
$HOME/.ssh/known_hosts
文件中,并拒绝连接到主机密钥已更改的主机。这提供了针对特洛伊木马攻击的最大程度的保护,但是,当文件/etc/ssh/ssh_known_hosts
维护不善或频繁连接到新主机时,这可能会很烦人。此选项强制用户手动添加所有新主机。如果该标志设置为“否”,SSH会自动将新的主机密钥添加到用户已知的主机文件中。如果此标志设置为“询问”,则只有在用户确认这是他们真正想要做的事情之后,新的主机密钥才会添加到用户已知的主机文件中,并且 SSH将拒绝连接到主机密钥已更改的主机。在所有情况下都会自动验证已知主机的主机密钥。论据必须是“是”、“否”或“问”。默认为“询问”。
答案2
ssh-keyscan
- 收集 ssh 公钥
如果您已经知道要连接的主机列表,则只需发出:
ssh-keyscan host1 host2 host3 host4
您可以选择-H
让它散列结果,就像 ssh 现在默认的那样
你也可以-t keytype
给按键类型是dsa
、rsa
、 或者ecdsa
您是否偏好选择要获取哪种类型的密钥而不是默认密钥。
运行后,ssh-keyscan
它将预先填充您的已知主机文件,并且 ssh 不会询问您添加新密钥的权限。
答案3
忽略主机
忽略 HostKeyChecking。为此,我使用例如:
ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null [email protected]
添加主机
.ssh/known_hosts
在第一次连接之前添加主机/服务器的指纹。这是更安全的方法。
答案4
在尝试之前执行以下代码片段。
mkdir -p ~/.ssh
echo "Host *" > ~/.ssh/config
echo " StrictHostKeyChecking no" >> ~/.ssh/config
ps:严格不适用于生产服务器,请小心 ManInMiddle