Git说"警告:永久添加到已知主机列表"

Don*_*lor 185 git ssh shell terminal command-line

每次我使用git与远程交互时,例如拉或推时,我都会看到以下消息:

警告:永久性地将"..."(RSA)添加到已知主机列表中.

如何防止显示这条恼人的消息?这只是一个烦恼 - 一切正常.

Jer*_*wdy 230

解决方案:创建~/.ssh/config文件并插入行:

UserKnownHostsFile ~/.ssh/known_hosts
Run Code Online (Sandbox Code Playgroud)

然后,您将在下次访问Github时看到该消息,但之后您将不会再看到它,因为主机已添加到known_hosts文件中.这解决了问题,而不仅仅是隐藏日志消息.

这个问题困扰了我很长一段时间.出现此问题的原因是为Windows编译的OpenSSH客户端不检查中的known_hosts文件~/.ssh/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.
Run Code Online (Sandbox Code Playgroud)

  • 是的,我不认为压制警告或错误是解决问题的正确方法.;) (8认同)
  • 效果很好!最后,愚蠢的警告停止了.顺便说一句,在Windows上,`〜/ .ssh/config`中的`~`是用户的主文件夹.要轻松打开它,按**Win-R**,键入`cmd`*输入*.命令提示符应该已在您的主文件夹中打开.键入`cd .ssh`*输入*,然后输入`start .`*输入*以在Windows资源管理器中打开该文件夹.然后你可以在记事本中创建**config**文件(保存时没有**.txt**扩展名).*(专业用户可以在命令提示符下直接回显一个新文件`;)`).*运行一个涉及*remote*两次的git命令(比如`git fetch`),你就完成了. (6认同)
  • 为什么你有 20 v 的 ssh? (2认同)
  • @bubakazouba v越多,日志越详细,请检查文档。三个就足够了,二十个就足够了:D (2认同)
  • 是的,按住 v 一秒钟比检查文档以确定可用 v 的最大数量要快 (2认同)

Kyl*_*per 86

将以下行添加到ssh配置文件($ HOME/.ssh/config):

LogLevel=quiet
Run Code Online (Sandbox Code Playgroud)

如果从命令行运行ssh,请在命令字符串中添加以下选项:

-o LogLevel=quiet
Run Code Online (Sandbox Code Playgroud)

例如,以下打印出machine.example.org上安装的gcc版本(并且没有警告):

ssh -o UserKnownHostsFile=/dev/null \
    -o StrictHostKeyChecking=no \
    -o LogLevel=quiet \
    -i identity_file \
    machine.example.org \
    gcc -dumpversion
Run Code Online (Sandbox Code Playgroud)

  • `LogLevel = quiet`是一个坏主意,他希望显示所有错误,他只是想避免这个特定的令人讨厌的错误.可能是因为他欺骗ssh使用`/ dev/null`作为`known_hosts`文件,可能是因为他想关闭`known_hosts`指纹检查,但不能,因为ssh的霸主不允许他这样做. (38认同)
  • 为了保持安全性,最好将"LogLevel = quiet"放在"Host"部分中. (3认同)

小智 55

设置LogLevelERROR(不QUIET)在~/.ssh/config文件中以避免看到这些错误:

Host *
   StrictHostKeyChecking no
   UserKnownHostsFile /dev/null
   LogLevel ERROR
Run Code Online (Sandbox Code Playgroud)

  • 这在我的情况下效果最好 - 或者您可以在命令行上指定"-oLogLevel = ERROR" (2认同)

小智 5

该消息来自SSH,它警告您正在连接到以前从未连接过的主机。我不建议您将其关闭,因为这意味着您可能会错过有关主机密钥更改的警告,该警告可能表示对SSH会话的MITM攻击。

  • 但是我每天连接它 10-15 次,我仍然收到此警告。 (2认同)
  • @JasonCarreiro,我是个大男孩,我知道没人会在机架中拉动MITM攻击,安全性是一个折衷,我希望新计算机可以使用预共享密钥开箱即用,而无需管理CA或ssh-keyscan (2认同)

Ste*_*idt 5

要禁止显示警告消息,ssh可以将以下行添加到~/.ssh/config

Host *
LogLevel error
Run Code Online (Sandbox Code Playgroud)

这将禁用警告,但不会禁用错误消息。与中的其他设置一样,如果您想要更细粒度的控制~/.ssh/config,您可以LogLevel在每个主机的基础上进行配置。