每次我使用git与遥控器进行交互时,例如拉或推时,我都会看到以下消息:
警告:永久性地将“...”(RSA)添加到已知主机列表中。
如何防止显示这条烦人的消息?这只是一个烦恼 - 一切正常。
答案 0 :(得分:221)
解决方案:创建一个~/.ssh/config
文件并插入以下行:
UserKnownHostsFile ~/.ssh/known_hosts
然后,您将在下次访问Github时看到该消息,但之后您将不会再看到它,因为主机已添加到known_hosts
文件中。这解决了问题,而不仅仅是隐藏日志消息。
这个问题困扰了我很长一段时间。出现此问题的原因是为Windows编译的OpenSSH客户端不检查~/.ssh/known_hosts
中的known_hosts文件
ssh -vvvvvvvvvvvvvvvvvvv git@github.com
debug3: check_host_in_hostfile: filename /dev/null
debug3: check_host_in_hostfile: filename /etc/ssh/ssh_known_hosts
debug3: check_host_in_hostfile: filename /dev/null
debug3: check_host_in_hostfile: filename /etc/ssh/ssh_known_hosts
Warning: Permanently added 'github.com,207.97.227.239' (RSA) to the list of known hosts.
答案 1 :(得分:85)
将以下行添加到ssh配置文件($ HOME / .ssh / config):
LogLevel=quiet
如果从命令行运行ssh,请在命令字符串中添加以下选项:
-o LogLevel=quiet
例如,以下内容打印出machine.example.org上安装的gcc版本(并且没有警告):
ssh -o UserKnownHostsFile=/dev/null \
-o StrictHostKeyChecking=no \
-o LogLevel=quiet \
-i identity_file \
machine.example.org \
gcc -dumpversion
答案 2 :(得分:54)
在LogLevel
文件中将ERROR
设置为QUIET
(不是~/.ssh/config
)以避免出现以下错误:
Host *
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
LogLevel ERROR
答案 3 :(得分:4)
该消息来自SSH,它警告您要连接到之前从未连接过的主机。我不建议将其关闭,因为这意味着您可能会错过关于主机密钥更改的警告,这可能表示您的SSH会话发生了MITM攻击。
答案 4 :(得分:3)
要取消ssh
的警告消息,您可以将以下行添加到~/.ssh/config
:
Host *
LogLevel error
这将禁用警告但不会显示错误消息。与~/.ssh/config
中的其他设置一样,如果您想要更精细的控制,则可以在每个主机的基础上配置LogLevel
。
答案 5 :(得分:2)
它主要表示该主机~/.ssh/known_hosts
的密钥发生了更改,并且不会自动更新它。因此,每次收到此警告消息时。
这通常用于连接到重新创建的虚拟机,这会使用相同的IP地址更改密钥
<强>解决方案强>
如果您只有一个条目,那么您可以删除~/.ssh/known_hosts
文件,并在第一次连接后,密钥将在那里,之后没有警告消息。
如果您有多个条目,则可以使用以下命令删除
$ ssh-keygen -R <hostname>
它适用于我
答案 6 :(得分:0)
如果您使用的是GitHub中的存储库,请考虑使用该网址的 HTTPS 版本,以完全回避此问题:
如果从Windows GitHub应用程序中克隆存储库,则它将用于远程URL。也许他们知道我们不知道的事情。
答案 7 :(得分:0)
我有同样的问题,我发现.ssh
中没有~
个文件。所以我只需在.ssh
路径下创建~
目录,问题就解决了。
答案 8 :(得分:0)
当我开始使用Windows机器时,我遇到了同样的问题。在我的情况下,这是因为我的SSH设置没有完成。 Github有一个关于SSH设置的非常精确的文档。一旦这样做了,问题就解决了。
https://help.github.com/articles/checking-for-existing-ssh-keys/ https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/
答案 9 :(得分:0)
添加ssh密钥
ssh-keygen -t rsa -b 4096 -C "abc@abc.com"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/bitbucket_rsa
板条箱配置文件
crate ~/.ssh/config
添加到行下方。
UserKnownHostsFile ~/.ssh/known_hosts
然后添加发布密钥并克隆您的存储库...完成.....
答案 10 :(得分:0)
我在Linux / Cent OS VM中遇到了相同的错误,这是因为IP重新启动后发生了更改。为了解决此问题,我在网络中定义了一个静态IP,并将该条目添加到/ etc / hosts文件中。对于静态IP,请提及一个稍高的范围值。例如,如果您当前的IP(ipconfig / ifconfig)为192.168.0.102,则下一次重启后可能会变为192.168.0.103。因此,在IPV4设置中将静态IP定义为192.168.0.181即可解决问题。
答案 11 :(得分:0)
就我而言,这是因为设置服务器的管理员在~/.ssh/config
中设置了这些选项
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
在大多数情况下,通过不使用~/.ssh/known_hosts
文件,这可以很好地工作。但是对于企业gitlab存储库,每次它给出“警告:将...永久添加到已知主机列表中”。
我的解决方案是注释掉UserKnownHostsFile /dev/null
行,该行允许创建~/.ssh/known_hosts
。然后,此后它不再发出任何警告。
您的known_hosts
中可能还会有旧/无效的条目。
# find entry in ~/.ssh/known_hosts
ssh-keygen -F <hostname>
# delete entry in ~/.ssh/known_hosts
ssh-keygen -R <hostname>
答案 12 :(得分:0)
使用以下命令将私钥添加到ssh-agent中:
ssh-add ~/.ssh/id_rsa
答案 13 :(得分:0)
我的情况是,在使用Gridengine qrsh
远程Shell登录时,我仅收到ssh警告。正常的ssh
可以按预期工作(第一次警告,然后安静)。
我的解决方案是用Gridengine可以选择的所有可能的服务器名称手动填充~/.ssh/known_hosts
(使用qhost
列出服务器):
for p in server1 server2 server3 server4; do
ssh-keyscan -H ${p}.company.com;
ssh-keyscan -H $(getent hosts $p | perl -lane 'print $F[0]');
done >> ~/.ssh/known_hosts
背景:
Gridengine是一个作业调度程序,可以使用ssh选择负载最小的服务器。警告的原因是qrsh
似乎总是指定用于进行ssh连接的非标准端口,从而导致known_hosts
被更新为还包含端口号的条目。下次qrsh
选择同一服务器时,将有一个新的端口号,并且known_hosts
将使用新的特定于端口的条目进行更新。还添加原始主机IP地址的原因是某些主机使用了ecdsa-sha2-nistp521
。如果未添加原始IP条目,则会收到警告:
ECDSA host key for IP address '10.1.2.3' not in list of known hosts.
答案 14 :(得分:-1)
由于持续的投票,我正在解决我的问题 这是最好的解决方案,但实际上并没有破解SSH客户端本身的源代码 如果有人有兴趣,请查看编辑历史记录。