私は Debian 7 Wheezy サーバーを実行していますが、SSH 経由で他のサーバーに接続する際に問題が発生しています。この問題は、crontab 経由で SSH を実行している場合にのみ発生し、それ以外の場合は発生しません (もちろん、同じユーザーとしてログインしている場合)。
このユーザーとして crontab 経由で ssh コマンドを実行すると、次の問題が発生します。
Host key verification failed.
ホスト キーが正しいことを確認するために、ファイルを削除し~/.ssh/known_hosts
、手動でサーバーに接続しました。
フラグ付きで SSH を実行すると-v
、次のようになります。
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
? 何週間もこの件を調べていますが、答えが見つかりません。誰か手がかりを持っていますか?
答え1
エージェント (または少なくともパスフレーズを提供する方法) なしでは、スクリプトからパスフレーズで保護されたキーを使用して接続することはできません。ssh デーモンは、tty なしでは提供できない入力を待機しています。
答え2
/dev/tty
SSH は、コンソールからではなく crontab から呼び出したため、読み取れないと言っています。/dev/tty
デバイスは現在のプロセスのコントローラー ターミナルであり、crontab からプロセスを起動すると、関連付けられたターミナルがないため、そのデバイスにアクセスできません。
ここにもっと良い説明があります:https://stackoverflow.com/questions/8514735/what-is-special-about-dev-tty