期待してパスワードを ssh 接続に送信するにはどうすればよいですか。
パスワードが p@ssword で、ssh コマンドが ssh me@127.0.0.1 だとします。
それが言ったときにパスワードを入力させることを期待してどうしますか
me@127.0.0.1 のパスワード:
?
SSHキーペアを使用する適切なアクションはオプションではありません.ssh(scp)を使用してサーバーにキーを配置する必要があり、パスワードを要求するからです。
私は常に「適切な」ソリューションを使用しましたが、他の状況では期待を使用しました。
ここで私は次の提案を見つけました:
#!/usr/local/bin/expect
spawn sftp -b cmdFile user@yourserver.com
expect "password:"
send "shhh!\n";
interact
公開鍵認証を使用し、パスフレーズのない鍵を使用する方が簡単ではないでしょうか?
ソース マシンのユーザーとして、これを実行して RSA キーを作成します。
ssh-keygen -t rsa
~/.ssh/id_rsa.pub をターゲット マシンにコピーし、ターゲット ユーザーのauthorized_keys ファイルに追加します。
最も手っ取り早い方法は (Tcl の専門家になりたい場合を除きます。これは 2009 年には珍しいことですが)、おそらく を使用することautoexpect
です。マニュアルページは次のとおりです。
http://expect.nist.gov/example/autoexpect.man.html
要するに、起動しautoexpect
、ssh セッションを実行し、必要なことを終了し、autoexpect を停止し、結果として生じる混乱が機能するまでキーボードを叩きます:) 簡単なハック以上のものは必要ないと思いますキーを整理してから、それでスコアをすでに知っているように聞こえます。
そして、あなたが求めているものに近い例がすでに含まれているこの質問があります。
キーソリューションは機能しません...キーはsshを実行している人だけが読み取れる必要があるためです。XP では、正しい権限でキー構造を作成できません。そのため、ssh はそれらを読み取りません。これは変更された可能性がありますが、最後に確認したところ、まだ機能していません。
Cygwin には autoexpect がありますが、bin パッケージには含まれていません。setup.exe を実行し、expect を検索して、ソース チェックボックスをオンにします。結果のツリーが /usr/src に表示され、そこに expect/expect/examples ディレクトリがあります。そこには autoexpect スクリプトのコピーがあります。
あなたがやろうとしていることをすることは不可能だと確信しています。パスワードを要求するほとんどの *nix アプリケーションは、stdin ではなく、TTY から直接読み取るため、パスワードをパイプすることはできません。
expect
明らかな理由もなく反対票を投じられた後、コマンドについてもう少し調査を行ったところsend_tty
、stdin ではなく /dev/tty に送信するコマンドがあることがわかりました。以前はこの機能を認識していませんでした。ただし、キーをサーバーに置くことをお勧めします。