尝试通过 ssh 连接到我控制的计算机时,我收到了熟悉的消息:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
[...].
Please contact your system administrator.
Add correct host key in /home/sward/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/sward/.ssh/known_hosts:86
RSA …Run Code Online (Sandbox Code Playgroud) 我想以非交互式方式克隆一个 repo。克隆时,git 要求确认主机的指纹:
The authenticity of host 'bitbucket.org (207.223.240.182)' can't be established.
RSA key fingerprint is 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40.
Are you sure you want to continue connecting (yes/no)? no
Run Code Online (Sandbox Code Playgroud)
每次出现这个问题时,我如何强制“是”?我尝试使用yes yes | git clone ...,但它不起作用。
编辑:这是一个解决方案:我可以自动将新主机添加到 known_hosts 吗?(使用 ssh-keyscan 将所有内容添加到 known_hosts)。
如何known_hosts安全地将主机密钥添加到 SSH文件?
我正在设置一台开发机器,我想(例如)防止git在我github.com使用 SSH克隆存储库时进行提示。
我知道我可以使用StrictHostKeyChecking=no(例如这个答案),但这并不安全。
到目前为止,我发现...
GitHub 在https://help.github.com/articles/github-s-ssh-key-fingerprints/上发布了他们的 SSH 密钥指纹
我可以ssh-keyscan用来获取github.com.
我如何结合这些事实?给定一个预先填充的指纹列表,我如何验证可以将 的输出ssh-keyscan添加到known_hosts文件中?
我想我在问以下问题:
如何获取由 返回的密钥的指纹ssh-keyscan?
假设我已经通过了 SSH 的MITM认证,但是我可以信任 GitHub HTTPS 页面(因为它有一个有效的证书链)。
这意味着我有一些(可疑的)SSH 主机密钥(来自ssh-keyscan)和一些(受信任的)密钥指纹。我如何验证一个与另一个?
相关:如何散列输出的主机部分ssh-keyscan?或者我可以混合散列/未散列的主机known_hosts吗?
我正在编写远程 rsync 设置的脚本,并且需要将远程服务器添加到本地 known_hosts 文件中,以避免在首次运行脚本时收到以下提示:
无法确定主机 '[hostname] ([IP address])' 的真实性。RSA 密钥指纹是[密钥指纹]。您确定要继续连接吗(是/否)?
根据我可以自动将新主机添加到 known_hosts 吗?我尝试过(使用新的 known_hosts 文件):
ssh-keyscan -H [hostname],[ip_address] >> ~/.ssh/known_hosts
ssh-keyscan -H [ip_address] >> ~/.ssh/known_hosts
ssh-keyscan -H [hostname] >> ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)
但这不起作用,我总是提示接受指纹。
当我让 ssh 为我添加这个时,know_hosts 文件中的密钥散列非常不同。
我还应该做些什么来解决这个问题?
我编写了一些脚本,并希望在known_hosts没有任何交互的情况下将远程主机添加到我的文件中。我可以运行类似的命令ssh -o "StrictHostKeyChecking no" root@10.x.x.x,将远程主机密钥添加到我的已知主机,但后面会出现 ssh 密码提示。在没有密码提示的情况下有什么方法可以做到这一点?