リモートコンピュータでスクリプトを実行しようとしています。これを(補助)と呼びます。簡単にするために、スクリプトは次のようになります。
#!/bin/bash
echo "This is the Remote Machine (Secondary)" > /tmp/test.txt
echo "---------------------------------------------------" >> /tmp/test.txt
echo "Test.sh scandir = $scandir" >> /tmp/test.txt
echo "Test.sh tmpdir = $tmpdir" >> /tmp/test.txt
echo "Test.sh CurrentDir = $CurrentDir" >> /tmp/test.txt
echo "---------------------------------------------------" >> /tmp/test.txt
次のコマンドを使用して、ホスト上でリモートで実行できます。
ssh <username>@192.168.1.20 'screen -S TestProcess -d -m ./test.sh'
スクリプトが期待どおりに実行されます。
ただし、システムプロセスでスクリプトの実行を自動化すると、次のエラーが発生します。
Feb 21 06:20:23 Primary test.sh: Host key verification failed.#015
SSHキーを生成してコピーしました。
ssh-keygen -R 192.168.1.20
ssh-copy-id <username>@192.168.1.20
何が問題なのでしょうか?
ベストアンサー1
これは、クライアントが正しいサーバーに接続していることを知る方法であるホストキーに関連しています。これはssh-keygen
、ユーザーを認証するためにサーバーによって生成されたキーとは何の関係もありません。
「ホスト鍵の検証に失敗する」とは、クライアントが以前にホストの公開鍵を記録したが、最後から公開鍵が変更されたことを意味する。これは、攻撃、サーバーの再インストール、またはサーバーのIPアドレスまたはホスト名の変更によって発生する可能性があります。保存されたホストキーはアカウントごとに保存されるため、アカウントで実行できますが、「システムプロセス」(おそらく他のユーザー)では実行できない理由について説明します。この問題を解決するには、ssh-keygen -R 192.168.1.20
システムプロセスを実行しているユーザーとして実行します。次に、そのシステムユーザーとして一度実行し、現在のホストキーを記録するように求められたら、「yes」と入力します。ssh [email protected] true
そのオプションを有効にしたか、StrictHostKeyChecking
SSHが最初にホストキーの確認メッセージを表示しなかったために失敗する可能性があります。 「ホストキーの確認に失敗しました」前にこれを知らせる別のメッセージが表示されます。どちらも以前と同様に、そのシステムユーザーとして一度実行し、メッセージが表示されたら「yes」と入力して現在のホストキーを記録します。キーはユーザーのホームディレクトリの下のファイルに保存されます。ssh [email protected] true
.ssh/known_hosts