每次我使用git与遥控器交互时,比如拉或推时,我都会看到以下消息:
警告:永久添加'…' (RSA)到已知主机列表。
如何防止显示这个烦人的消息?这只是一个烦恼——一切都很正常。
每次我使用git与遥控器交互时,比如拉或推时,我都会看到以下消息:
警告:永久添加'…' (RSA)到已知主机列表。
如何防止显示这个烦人的消息?这只是一个烦恼——一切都很正常。
当前回答
在~/中设置LogLevel为ERROR(不是QUIET)。Ssh /config文件,以避免看到这些错误:
Host *
StrictHostKeyChecking no
UserKnownHostsFile /dev/null
LogLevel ERROR
其他回答
当我开始使用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/
我在Linux/Cent操作系统虚拟机中也遇到过同样的错误,这是因为重启后IP发生了变化。为了解决这个问题,我在网络中定义了一个静态IP,并将该条目添加到/etc/hosts文件中。对于静态IP,请提到稍微高一些的范围值。例如,如果您当前的IP (ipconfig/ifconfig)是192.168.0.102,下次重启后可能会变成192.168.0.103。因此,在IPV4设置中定义您的静态IP为192.168.0.181,这应该可以做到这一点。
该消息来自SSH,它警告您正在连接到一个您以前从未连接过的主机。我不建议关闭它,因为这意味着您可能会错过关于主机密钥更改的警告,这可能表明SSH会话受到MITM攻击。
就我所知,你提到的这个问题没有明确的解决办法。 之前建议的/dev/null重定向仍然会显示警告,它只是通过将输出重定向到/dev/null来禁用存储远程密钥的安全特性 所以ssh仍然会认为它写了一些实际上被丢弃的东西。
据我所知,唯一的选择是捕获消息并将其从标准输出中删除。
ssh/scp..... 2>&1 | grep -v "^Warning: Permanently added"
这是一个完整的例子,你可以使用包装器隐藏这样的警告:
#!/bin/bash
remove="^Warning: Permanently added" # message to remove from output
cmd=${0##*/}
case $cmd in
ssh)
binary=/usr/bin/ssh
;;
*)
echo "unsupported binary ($0)"
exit
;;
esac
$binary "$@" 2>&1 | grep -v "$remove"
要安装它,您所需要做的就是为您希望修改的实际命令添加/修改“case”语句。(ssh, scp, git等)。 “ssh”意味着脚本必须命名为“ssh”(或者到脚本的链接命名为ssh)。 binary=/full/path是脚本应该包装的二进制文件的路径。 然后将带有您选择的名称的脚本放到/bin或其他地方。
该脚本还可以在$binary变量中使用-o "UserKnownHostsFile=/dev/null",这比将这样的安全风险放入全局ssh配置中要好得多,这会影响所有ssh会话,而不仅仅是那些您想要抑制消息的会话。
缺点: 这有点开销,不是一个完美的解决方案,并将stderr移动到stdout,这可能不是在所有情况下都很好。 但是它将消除您不希望看到的任何类型的警告消息,并且您可以使用一个脚本来包装您想要的所有二进制文件(通过使用文件系统链接)
在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