パスワードをsshに渡すためにexpectを使用する
質問
ssh接続にパスワードを送信することを期待して使用するにはどうすればよいですか。
パスワードはp @ sswordだった sshコマンドは ssh me@127.0.0.1
パスワードが入力されたときにパスワードを入力させたいと思ったらどうしますか
me@127.0.0.1のパスワード:
ssh(scp)を使用してサーバーにキーを配置する必要があり、パスワードを要求されるため、SSHキーペアを使用する適切なアクションは選択肢ではありません。
解決
常に<!> quot; proper <!> quot;を使用しました。ソリューションが、私は他の状況で期待を使用しました。
ここ次の提案が見つかりました:
#!/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
を使用することです。これがmanページです:
http://expect.nist.gov/example/autoexpect.man.html
要するに、<=>を起動し、sshセッションを実行し、必要なことを完了し、自動期待を停止してから、結果の混乱の上でキーボードが機能するまで叩きます:)キーを整理するための簡単なハック以上のものは、それでスコアをすでに知っているように聞こえます。
そしてこの質問には、探しているものに近い例が既に含まれています。
Cygwinには、binパッケージにはないautoexpectがあります。 setup.exeを実行して、expectを検索し、ソースチェックボックスをオンにします。結果のツリーが/ usr / srcに表示され、そこにexpect / expect / examplesディレクトリがあります。そこにはautoexpectスクリプトのコピーがあります。
キーソリューションは機能しません...キーはsshを実行している人のみが読み取り可能である必要があるためです。 XPでは、適切な権限を持つキー構造を作成できません。したがって、sshはそれらを読み取りません。これは変更された可能性がありますが、最後に確認したところ、まだ機能していません。
あなたがやろうとしていることをすることは不可能だと確信しています。標準入力ではなく、TTYから直接読み取られたパスワードを要求するほとんどの* nixアプリケーションは、パスワードをパイプで渡すことができません。他の人が述べたように、パスワードを要求しないようにSSHを構成できますこちら。
明確な理由なしにダウン票を投じられた後、expect
コマンドについてさらに調査を行ったところ、stdinの代わりに/ dev / ttyに送信するsend_tty
コマンドがあることがわかりました。あなたが望むことをしてください...私は以前、この機能を知らなかった。ただし、サーバーにキーを置くことをお勧めします。