web-dev-qa-db-ja.com

パスワードをsshに渡すためにexpectを使用する

パスワードをssh接続に送信することを期待して使用するにはどうすればよいですか?.

パスワードはp @ sswordであり、sshコマンドはssh [email protected]であったとします

それが言うときにパスワードを入力させると期待して何をしますか

[email protected]のパスワード:

SSHキーペアを使用する適切なアクションは、ssh(scp)を使用してサーバーにキーを配置する必要があり、パスワードを要求されるため、オプションではありません。

37
Malfist

私は常に「適切な」ソリューションを使用していましたが、他の状況ではexpectを使用していました。

ここ 次の提案が見つかりました:

#!/usr/local/bin/expect
spawn  sftp  -b cmdFile [email protected]
expect "password:"
send "shhh!\n";
interact
71
max

公開鍵認証を使用し、パスフレーズなしで鍵を使用する方が簡単ではないでしょうか?

ソースマシンのユーザーがこれを行うと、RSAキーが作成されます。

ssh-keygen -t rsa

〜/ .ssh/id_rsa.pubをターゲットマシンにコピーし、ターゲットユーザーのauthorized_keysファイルに追加します。

5
Paul Dixon

あなたの最速の方法は(Tclの専門家になりたい場合を除いて、2009年には珍しい...)、おそらくautoexpectを使用することです。これがmanページです。

http://expect.nist.gov/example/autoexpect.man.html

要するに、autoexpectを起動し、sshセッションを実行し、必要なことを完了し、自動期待を停止してから、結果の混乱の上でキーボードが機能するまで叩きます:)あなたの鍵を整理するための簡単なハック以上のものは、それであなたはそれですでにスコアを知っているように聞こえます。

そして、 この質問 があります。これには、探しているものに近い例がすでに含まれています。

4

Cygwinのautoexpectはbinパッケージに含まれていません。 setup.exeを実行して、expectを検索し、ソースチェックボックスをオンにします。結果のツリーが/ usr/srcに表示され、そこにexpect/expect/examplesディレクトリがあります。そこにはautoexpectスクリプトのコピーがあります。

0
DJJ

キーはsshを実行している人だけが読み取り可能でなければならないため、キーソリューションは機能しません。 XPでは、適切な権限を持つキー構造を作成できません。したがって、sshはそれらを読み取りません。これは変更された可能性がありますが、最後に確認したところ、まだ機能していません。

0
Mikey B