web-dev-qa-db-ja.com

known_hostsが正しいにもかかわらず、ホストキーの検証に失敗しました

Debian 7 Wheezyサーバーを実行していますが、SSH経由で他のサーバーに接続する際に問題が発生します。この問題は、crontabを介してSSHを実行しているときにのみ発生し、それ以外の場合は発生しません(もちろん同じユーザーとしてログインします)。

Crontabを介してこのユーザーとしてsshコマンドを実行しているときに、次の問題が発生します。

Host key verification failed.

ホストキーを正しくするために、~/.ssh/known_hostsファイルを削除し、サーバーに手動で接続しました。

-vフラグを指定してSSHを実行すると、次のようになります。

debug1: read_passphrase: can't open /dev/tty: No such device or address
Host key verification failed.

/dev/ttyをリストすると、666の権限があります。

crw-rw-rw- 1 root root 5, 0 Jun 21 15:49 /dev/tty

また、完全に確認するために、/dev/ttyをリストした後、手動でアクセス許可を666に設定しました。

SSHが/ dev/ttyを読み取れないと言うのはなぜですか?私はこれを何週間も調査してきましたが、答えが見つかりませんでした。誰か手がかりがありますか?

2
Hans-Filip Elo

エージェント(または少なくともパスフレーズを提供する方法)がないと、スクリプトからパスフレーズで保護されたキーに接続できません。sshデーモンは、ttyなしでは提供できない入力を待機しています。

参照: https://unix.stackexchange.com/questions/90853/how-can-i-run-ssh-add-automatically-without-password-Prompt

2
maxxvw

SSHは、コンソールからではなくcrontabから呼び出したため、/dev/ttyを読み取ることができないと言っています。 /dev/ttyデバイスは、現在のプロセスのコントローラー端末であり、crontabからプロセスを起動すると、関連付けられた端末がないため、そのデバイスにアクセスできません。

ここにもっと良い説明があります: https://stackoverflow.com/questions/8514735/what-is-special-about-dev-tty

1
Mauricio López