在本地局域网上禁用“永久添加的<主机>…”警告


26

我具有以下ssh_config连接到本地LAN上的计算机和VM中的计算机的功能:

Host 172.16.*.*
StrictHostKeyChecking no
UserKnownHostsFile /dev/null

但是,每次连接时都会产生警告:

$ ssh jdoe@172.16.4.11
Warning: Permanently added '172.16.4.11' (ECDSA) to the list of known hosts.
Enter passphrase for key '/Users/jdoe/.ssh/id_ed25519': 

我正在使用OpenSSH 7.1。如何在本地LAN的每个连接上禁用警告?

Answers:


31

将以下内容添加到您的SSH配置文件中:

LogLevel ERROR

或附加-o LogLevel=ERROR到ssh命令本身。


Debian上的SSH配置文件是/etc/ssh/ssh_config(not /etc/ssh/sshd_config!)
rubo77 '19

16

通过将ssh配置从默认的日志级别“ info”更改为“ error”(下一个级别),您应该能够做到这一点。

请参阅ssh_config手册页:

LogLevel
给出从ssh(1)记录消息时使用的详细程度。可能的值是:QUIETFATALERRORINFOVERBOSEDEBUGDEBUG1DEBUG2,和DEBUG3。默认值为INFODEBUGDEBUG1相等。DEBUG2DEBUG3指定更高级别的详细输出。

的源代码ssh讲述了这个故事:

    /*
     * Initialize "log" output.  Since we are the client all output
     * actually goes to stderr.
     */
    log_init(av[0], options.log_level == -1 ? SYSLOG_LEVEL_INFO : options.log_level,
        SYSLOG_FACILITY_USER, 1);

以及log_init:的定义:

void
log_init(char *av0, LogLevel level, SyslogFacility facility, int on_stderr)
{

即,所有“日志”消息都变为标准错误,并且您只能调整获得的数量。您不想要的那个恰好在该INFO级别。


7

简而言之,请使用带有-q标志的ssh禁用警告/诊断(但不能禁用错误)。


7
-q会做得比您可能要讨价还价。它抑制了非常有用的错误消息。示例:ssh -q not-existing-host将不打印单个错误消息。该命令只是静默失败。相反,ssh -o LogLevel=error not-existing-host将打印说明:ssh:无法解析主机名not-existing-host:名称或服务未知
hagello
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.