我有以下内容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) 记录消息时使用的详细程度。可能的值包括:QUIET
、FATAL
、ERROR
,INFO
,,,,,和。默认值为VERBOSE
DEBUG
DEBUG1
DEBUG2
DEBUG3
INFO
.DEBUG
和DEBUG1
是等价的。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