我们正在尝试加快用于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
有没有办法避免这种情况,或者我们注定要从每个服务器手动至少在每个服务器上连接一次?
我们正在尝试加快用于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
有没有办法避免这种情况,或者我们注定要从每个服务器手动至少在每个服务器上连接一次?
Answers:
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文件维护不当或经常与新主机建立连接,这可能会很烦人。此选项强制用户手动添加所有新主机。如果此标志设置为“ no”,则ssh会自动将新的主机密钥添加到用户已知的主机文件中。如果此标志设置为“询问”,则只有在用户确认他们真正想要的操作之后,新的主机密钥才会添加到用户已知的主机文件中,并且 ssh将拒绝连接其主机密钥已更改的主机。在所有情况下,都会自动验证已知主机的主机密钥。参数必须为“是”,“否”或“询问”。默认值为“询问”。
ssh-keyscan -收集ssh公钥
如果您已经知道要连接的主机列表,则只需发出:
ssh-keyscan host1 host2 host3 host4
您可以-H选择让它哈希结果,例如ssh defaults到现在
还可以给你-t keytype是公钥类型的dsa,rsa或者ecdsa如果你有一个偏好于哪个键的类型抢,而不是默认。
运行后ssh-keyscan,它将预先填充您的已知主机文件,并且不会有ssh询问您是否允许添加新密钥。
ssh-keyscan -H myhost >> ~/.ssh/known_hosts,或针对整个服务器范围,/etc/ssh/ssh_known_hosts
您可以将指纹添加到每个服务器的known_hosts。对于单个用户:
cat ~/.ssh/known_hosts
echo "$SERVER,$PORT ssh-rsa $SERVER_KEY_FINGERPRINT" >> ~/.ssh/known_hosts
忽略HostKeyChecking。为此,我使用例如:
ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null user@example.net
.ssh/known_hosts在首次连接之前,先添加主机/服务器的指纹。这是更安全的方法。
/dev/null?ssh -oStrictHostKeyChecking=no user@example.net一次将服务器的指纹保存到$HOME/.ssh/known_hosts文件中会不会更好,因此后续连接将继续进行而无需请求确认?
我喜欢蒂姆(Tim)对一种类型的问题的回答,但是,如果这是您打算定期连接的主机,那么我会在〜/ .ssh / config中创建一个条目(如果文件不存在,请创建它)。
# this example shows wildcard for IP
# you can even use more than one wildcard 10.0.*.* for example
Host 192.168.56.*
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
# you can even alias it, which is really useful when scp'ing/rsyncing foo:/path/to/remote
Host foo
HostName foo-long-192-10-135-55.hostname.not-going-to-remember.doh
StrictHostKeyChecking no
UserKnownHostsFile /dev/null