SSH:ホスト「ホスト名」の信頼性を確立できません
-
01-10-2019 - |
質問
マシンにsshすると、このエラー警告が表示される場合があり、「はい」または「いいえ」と言うように求められます。これにより、スクリプトから他のマシンに自動的にsshになると実行するときに問題が発生します。
警告メッセージ:
The authenticity of host '<host>' can't be established.
ECDSA key fingerprint is SHA256:TER0dEslggzS/BROmiE/s70WqcYy6bk52fs+MLTIptM.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'pc' (ECDSA) to the list of known hosts.
自動的に「はい」と言ったり、これを無視したりする方法はありますか?
解決
SSHクライアントに応じて、StricThostKeyCheckingオプションをコマンドラインでNOに設定したり、null nowned_hostsファイルにキーを送信したりできます。また、すべてのホストまたは特定のIPアドレスまたはホスト名のセットに対して、これらのオプションを構成ファイルに設定することもできます。
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
編集
@Iandunnが指摘しているように、これを行うにはセキュリティリスクがあります。接続しているリソースが攻撃者によってスプーフィングされている場合、彼らは潜在的に宛先サーバーの課題を再生する可能性があります。あなたの資格情報。接続メカニズムを変更してHostKeyCheckingをスキップする前に、それが適切なリスクであるかどうかを慎重に検討する必要があります。
参照.
他のヒント
より良い答えに値する古い質問。
無効化せずにインタラクティブなプロンプトを防ぐことができます StrictHostKeyChecking
(これは不安です)。
次のロジックをスクリプトに組み込みます。
if [ -z `ssh-keygen -F $IP` ]; then
ssh-keyscan -H $IP >> ~/.ssh/known_hosts
fi
サーバーの公開キーがあるかどうかを確認します known_hosts
. 。そうでない場合、それはサーバーから公開キーを要求し、それを追加します known_hosts
.
このようにして、あなたは一度だけ中間の攻撃にさらされますが、これは以下によって緩和される場合があります。
- スクリプトが安全なチャネルで初めて接続することを保証する
- 指紋を手動で確認するためにログまたは既知の既知の_hostを検査する(一度だけ行う)
無効にする(または無効化制御)するには、次の行を開始に追加します /etc/ssh/ssh_config
...
Host 192.168.0.*
StrictHostKeyChecking=no
UserKnownHostsFile=/dev/null
オプション:
- ホストサブネットは可能です
*
すべてのIPへの無制限のアクセスを可能にするため。 - 編集
/etc/ssh/ssh_config
グローバル構成用または~/.ssh/config
ユーザー固有の構成用。
見る http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html
superuser.comでの同様の質問 - 参照 https://superuser.com/a/628801/55163
確実に ~/.ssh/known_hosts
書くことができます。それは私のためにそれを修正しました。
これを行うための最良の方法は、「stricthostkeychecking」に加えて「batchmode」を使用することです。これにより、スクリプトは新しいホスト名を受け入れ、既知の_hostsファイルに書き込みますが、はい/いいえ介入は必要ありません。
ssh -o BatchMode=yes -o StrictHostKeyChecking=no user@server.example.com "uptime"
通常は「〜/.ssh/config」にある構成ファイルを編集し、ファイルのbegginingで、以下の行を追加します
Host *
User your_login_user
StrictHostKeyChecking no
IdentityFile ~/my_path/id_rsa.pub
に設定されています your_login_user
この設定はyour_login_userに属していると言います
stricthostkeychecking set noに設定されると、プロンプトが回避されます
IdentityFileはRSAキーへのパスです
これは私と私のスクリプトのために機能します、あなたに幸運を祈ります。
この警告は、セキュリティ機能のために発行され、この機能を無効にしないでください。
一度表示されます。
2番目の接続の後にまだ表示されている場合、問題はおそらく次のことです。 known_hosts
ファイル。この場合、次のメッセージも表示されます。
Failed to add the host to the list of known hosts
ファイルの権限を変更する所有者を変更して、ユーザーが書き込みできるようにすることで修正できます。
sudo chown -v $USER ~/.ssh/known_hosts
Coriの答えを参照して、私はそれを変更し、以下のコマンドを使用しました。それなし exit
, 、残りのコマンドは実際にリモートマシンにログインしていましたが、スクリプトでは望ましくありませんでした
ssh -o StrictHostKeyChecking=no user@ip_of_remote_machine "exit"
これを行う - > chmod +w ~/.ssh/known_hosts
. 。これにより、ファイルに書き込み許可が追加されます ~/.ssh/known_hosts
. 。その後、リモートホストが known_hosts
次回に接続するときにファイルします。
一般的に、この問題は、キーを非常に頻繁に変更しているときに発生します。サーバーに基づいて、サーバーで生成および貼り付けた新しいキーを更新するのに時間がかかる場合があります。そのため、サーバーにキーを生成して貼り付けた後、3〜4時間待ってから試してみてください。問題を解決する必要があります。それは私と一緒に起こりました。
理想的には、自己管理の認証局を作成する必要があります。キーペアの生成から始めます。
ssh-keygen -f cert_signer
次に、各サーバーのパブリックホストキーに署名します。
ssh-keygen -s cert_signer -I cert_signer -h -n www.example.com -V +52w /etc/ssh/ssh_host_rsa_key.pub
これにより、署名されたパブリックホストキーが生成されます。
/etc/ssh/ssh_host_rsa_key-cert.pub
の /etc/ssh/sshd_config
, 、ポイントします HostCertificate
このファイルに:
HostCertificate /etc/ssh/ssh_host_rsa_key-cert.pub
SSHDサービスを再起動します:
service sshd restart
次に、SSHクライアントで、次のことを追加します ~/.ssh/known_hosts
:
@cert-authority *.example.com ssh-rsa AAAAB3Nz...cYwy+1Y2u/
上記には:
@cert-authority
- ドメイン
*.example.com
- 公開鍵の完全な内容
cert_signer.pub
cert_signer
公開鍵は、パブリックホストキーがによって署名されているサーバーを信頼します cert_signer
秘密鍵。
これには、クライアント側での1回限りの構成が必要ですが、まだプロビジョニングされていないサーバーを含む複数のサーバーを信頼することができます(各サーバーに署名する限り、つまり)。
詳細については、参照してください このwikiページ.
これらを/etc/ssh/ssh_configに追加します
Host *
UserKnownHostsFile=/dev/null
StrictHostKeyChecking=no
これをホストサーバーで実行することは予測問題です
chmod -R 700 ~/.ssh
私は同じエラーがあり、それがちょうど私に起こったので、あなたは間違った特権を持っているかもしれないという事実に注意を引きたいと思っていました。
あなたはあなたをセットアップします .ssh
通常のディレクトリまたは root
ユーザーであるため、正しいユーザーである必要があります。このエラーが現れたとき、私はそうでした root
しかし、私は構成しました .ssh
通常のユーザーとして。終了 root
修正しました。
以下に書かれたエラーを与える問題を解決します。
エラー:
ホスト 'xxx.xxx.xxxの信頼性は確立できません。
RSAキーフィンガープリントは09:6C:EF:CD:55:C4:4F:SS:5A:88:46:0A:A9:27:83:89。
解決:
1. OpenSSHツールをインストールします。
2.コマンドsshを実行します
3.このホストを追加することを求めます。はいを受け入れます。
4.このホストは、既知のホストリストを追加します。
5.これで、このホストに接続できます。
このソリューションは現在機能しています......