如何绕过此问题或添加自动回答此问题的标志?
因为我正在尝试编写脚本,并且这个问题一直在停止rsync的过程,因为在提示时无法在脚本中回答这个问题。
答案 0 :(得分:33)
将StrictHostKeyChecking
选项设置为no
,可以在配置文件中,也可以通过-o
。
使用e
的{{1}}选项将选项传递给rsync
:
ssh
答案 1 :(得分:2)
所以,我发现很多不安全的答案都有效 - 但更好的方法是工作量不多,所以我一直在搜索那些建议不那么安全的做SSH相关事情的帖子,比如rsync 。我一直在寻找一种平凡的方式来绕过克隆git repo的未知主机手动交互,如下所示,但它适用于rsync和其他技术:
brad@computer:~$ git clone git@bitbucket.org:viperks/viperks-api.git
Cloning into 'viperks-api'...
The authenticity of host 'bitbucket.org (104.192.143.3)' 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)?
请注意RSA密钥指纹...
所以,这是一个SSH的东西,这将适用于通过SSH的git和一般的SSH相关的东西......
brad@computer:~$ nmap bitbucket.org --script ssh-hostkey
Starting Nmap 7.01 ( https://nmap.org ) at 2016-10-05 10:21 EDT
Nmap scan report for bitbucket.org (104.192.143.3)
Host is up (0.032s latency).
Other addresses for bitbucket.org (not scanned): 104.192.143.2 104.192.143.1 2401:1d80:1010::150
Not shown: 997 filtered ports
PORT STATE SERVICE
22/tcp open ssh
| ssh-hostkey:
| 1024 35:ee:d7:b8:ef:d7:79:e2:c6:43:9e:ab:40:6f:50:74 (DSA)
|_ 2048 97:8c:1b:f2:6f:14:6b:5c:3b:ec:aa:46:46:74:7c:40 (RSA)
80/tcp open http
443/tcp open https
Nmap done: 1 IP address (1 host up) scanned in 42.42 seconds
首先,在每日驱动程序上安装nmap。 nmap对某些事情非常有帮助,比如检测开放端口和这个 - 手动验证SSH指纹。但是,回到我们正在做的事情。
好。我要么在多个地方受到损害,要么我已经检查了机器 - 或者对于所有正在发生的事情的更为合理的解释。
'指纹'只是一个字符串缩短了单向算法,为了我们人类的方便而存在多个字符串解析为同一指纹的风险。它发生了,它们被称为碰撞。
无论如何,回到我们在下面的上下文中可以看到的原始字符串。
brad@computer:~$ ssh-keyscan bitbucket.org
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-128
no hostkey alg
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-129
bitbucket.org ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-123
no hostkey alg
因此,提前,我们有办法要求原始主持人提供一种身份证明。
此时我们手动像自动一样易受攻击 - 字符串匹配,我们有创建指纹的基础数据,我们可以在将来要求提供基础数据(防止冲突)。
现在以防止询问主机真实性的方式使用该字符串......
本例中的known_hosts文件不使用明文条目。当你看到它们时你会知道哈希条目,它们看起来像是随机字符而不是xyz.com或123.45.67.89的哈希。
brad@computer:~$ ssh-keyscan -t rsa -H bitbucket.org
# bitbucket.org SSH-2.0-conker_1.0.257-ce87fba app-128
|1|yr6p7i8doyLhDtrrnWDk7m9QVXk=|LuKNg9gypeDhfRo/AvLTAlxnyQw= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==
第一条注释线真然出现 - 但你可以通过“>”进行简单的重定向来摆脱它或“>>”约定。
由于我已尽力获取用于识别“主机”和信任的无污染数据,因此我将此标识添加到〜/ .ssh目录中的known_hosts文件中。由于它现在将被识别为已知主机,因此当您还是一名年轻人时,我不会得到上述提示。
感谢您坚持下去,在这里,你走了。我正在添加bitbucket RSA密钥,以便我可以以非交互方式与我的git存储库进行交互,作为CI工作流程的一部分,但无论你做什么都想做。
#!/bin/bash
cp ~/.ssh/known_hosts ~/.ssh/known_hosts.old && echo "|1|yr6p7i8doyLhDtrrnWDk7m9QVXk=|LuKNg9gypeDhfRo/AvLTAlxnyQw= ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAubiN81eDcafrgMeLzaFPsw2kNvEcqTKl/VqLat/MaB33pZy0y3rJZtnqwR2qOOvbwKZYKiEO1O6VqNEBxKvJJelCq0dTXWT5pbO2gDXC6h6QDXCaHo6pOHGPUy+YBaGQRGuSusMEASYiWunYN0vCAI8QaXnWMXNMdFP3jHAJH0eDsoiGnLPBlBp4TNm6rYI74nMzgz3B9IikW4WVK+dc8KZJZWYjAuORU3jc1c/NPskD2ASinf8v3xnfXeukU0sJ5N6m5E8VLjObPEO+mN2t/FZTMZLiFqPWc/ALSqnMnnhwrNi2rbfg/rd/IpL8Le3pSBne8+seeFVBoGqzHM9yXw==" >> ~/.ssh/known_hosts
所以,这就是你今天保持处女的方式。您可以通过按照自己的时间类似的指示对github执行相同的操作。
我看到很多堆栈溢出帖子告诉你以编程方式盲目地添加密钥而不进行任何检查。您从不同网络上的不同计算机检查密钥的次数越多,您可以拥有的信任就越多,主机就是它所说的那个 - 这是您可以从这一层安全性中获得的最佳信息。
WRONG
ssh -oStrictHostKeyChecking = no hostname [command]
WRONG
ssh-keyscan -t rsa -H hostname>>的〜/ .ssh / known_hosts中德尔>
请不要做上述任何一件事。您有机会增加机会避免某人通过中间人攻击来窃听您的数据传输 - 抓住机会。区别在于确认您拥有的RSA密钥是真正的服务器之一,现在您知道如何获取该信息以进行比较,以便您可以信任该连接。只需记住来自不同计算机的更多比较&网络通常会提高您信任连接的能力。