禁用“永久添加...”本地局域网上出现警告

禁用“永久添加...”本地局域网上出现警告

我有以下内容ssh_config连接到本地局域网上的机器和虚拟机中的机器:

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

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

$ ssh [email protected]
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 每次连接时的警告?

答案1

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

LogLevel ERROR

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

答案2

您可以通过将 ssh 配置从默认日志级别“信息”更改为“错误”(下一个级别)来做到这一点。

请参阅ssh_config手册页:

LogLevel
给出从 ssh(1) 记录消息时使用的详细程度。可能的值包括:QUIETFATALERRORINFO,,,,,和。默认值为VERBOSEDEBUGDEBUG1DEBUG2DEBUG3INFO.DEBUGDEBUG1是等价的。DEBUG2并且DEBUG3每个都指定更高级别的详细输出。

源代码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等级。

答案3

简而言之,使用 -q 标志运行 ssh 以禁用警告/诊断(但不禁用错误)。

答案4

如果你使用命令行

$ ssh xxx@xxx uname -m
Warning: Permanently added 'xxx' (ECDSA) to the list of known hosts.

Authorized users only. All activities may be monitored and reported.
aarch64

添加选项-E /dev/null -o LogLevel=error

$ ssh -E /dev/null -o LogLevel=error xxx@xxx uname -m
aarch64

相关内容