web-dev-qa-db-ja.com

ローカルLANで「恒久的に追加された<Host> ...」警告を無効にする

私はssh_configローカルLAN上のマシンとVM内のマシンに接続するには:

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の各接続で警告を無効にするにはどうすればよいですか?

26
jww

SSH構成ファイルに以下を追加します。

LogLevel ERROR

または、-o LogLevel=ERRORをsshコマンド自体に追加します。

34
TakingItCasual

これを行うには、SSH構成をデフォルトのログレベルの「info」から「error」(次のレベル)に変更します。

ssh_config マニュアルページを参照してください:

LogLevel
ssh(1)からのメッセージをログに記録するときに使用される詳細レベルを指定します。可能な値は次のとおりです:QUIETFATALERRORINFOVERBOSEDEBUGDEBUG1DEBUG2DEBUG3。デフォルトはINFOです。 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レベルにあります。

16
Thomas Dickey

つまり、-qフラグを指定してsshを実行し、警告/診断を無効にします(エラーは無効にしません)。

7
JJC