あるシステムで SSHknown_hosts を無視

あるシステムで SSHknown_hosts を無視

SSHとJumphostを使用すると、奇妙な動作が発生します。マシンAで設定が実行されたとき(cygwin, OpenSSH_7.1p1, OpenSSL 1.0.2d 2015年7月9日)マシンBでは機能しません(OpenSSH_6.7p1 Ubuntu-5ubuntu1.3、OpenSSL 1.0.1f 2014年1月6日)。 Ansibleは、Baschenホストを介してリモートマシンに接続するためにこの設定を使用する必要があります。

私は以下を持っていますssh.config

Host bastion
    HostName               a.a.a.a
    ProxyCommand           none
    UserKnownHostsFile     known_hosts

Host *
    User                   user
    Port                   22
    ForwardAgent           yes
    ProxyCommand           ssh [email protected] nc %h %p
    PasswordAuthentication no
    UserKnownHostsFile     known_hosts

これらのknown_hostsファイルは同じフォルダにあります。

呼ぶ

ssh bastion -F ssh.config

両方のコンピュータで動作します。しかし、

ssh [email protected] -F ssh.config

これはAマシンでのみ機能し、Bマシンでは機能しません。

The authenticity of host 'a.a.a.a (a.a.a.a)' can't be established.
ECDSA key fingerprint is ###.

プロキシコマンドを次のように変更してみました。

ProxyCommand ssh [email protected] -F ssh.config nc %h %p

これにより問題が解決しました。

ssh [email protected] -F ssh.config

これは両方のシステムで実行されるためです。ただし、設定もrsyncAnsibleによって実行され、他のデフォルトディレクトリで実行されるため、ssh.configファイルが見つかりません。移植性のために絶対パスを使用したくありません。これらのスクリプトは、ローカルコンピュータ(一部のWindowsでは付属cygwin)で実行するか、リモートエージェントを使用する専用のビルドサーバーを介して実行する必要があります。

ProxyCommand今は次のように設定しました。

ProxyCommand ssh -o UserKnownHostsFile=/dev/null \
  -o StrictHostKeyChecking=no [email protected] nc %h %p

rsyncこれはA + Bで動作しますが、/problemsがありますansible。ログは以下を提供します。

msg: Warning: Permanently added 'a.a.a.a' (ECDSA) to the list of known hosts.

ホスト鍵の検証に失敗しました。

rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]

TL; DRの初期設定では、ホストキーの設定に手動の手順が必要なため、ヘッドレスとして機能しません。代替案は以下のワークフローを中断します(rsync)。他のオプションがありますか?

ベストアンサー1

ホストキーのセキュリティを「解決する」方法は、ssh-keyscanそれを使用してファイルを作成し、known_hostsホストの信頼性を手動で確認せずに接続できることです。

次のように使用できます。

ssh-keyscan hostname > known_hosts

「少し」セキュリティが失われますが、信頼できる環境で実行されている場合は許可されます。

おすすめ記事