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
を読み取れないと言うのはなぜですか?私はこれを何週間も調査してきましたが、答えが見つかりませんでした。誰か手がかりがありますか?
エージェント(または少なくともパスフレーズを提供する方法)がないと、スクリプトからパスフレーズで保護されたキーに接続できません。sshデーモンは、ttyなしでは提供できない入力を待機しています。
SSHは、コンソールからではなくcrontabから呼び出したため、/dev/tty
を読み取ることができないと言っています。 /dev/tty
デバイスは、現在のプロセスのコントローラー端末であり、crontabからプロセスを起動すると、関連付けられた端末がないため、そのデバイスにアクセスできません。
ここにもっと良い説明があります: https://stackoverflow.com/questions/8514735/what-is-special-about-dev-tty