web-dev-qa-db-ja.com

ファイルにあるパスワードをsshコマンドにパイプする

そのため、sshを使用して多数の異なるユーザーとしてサーバーにログインする必要があり、ユーザーのパスワードを含むファイルから毎回パスワードをコピーするのにうんざりしています。パスワードを使用しないように変更することはできません。私のものではなく、ゲーム用です。

私は使ってみました:

$ cat /path/to/myfile | ssh user@localhost

Stdinが端末ではないため、疑似端末が割り当てられないというメッセージが表示されます。

私はそれがどのように機能するべきか本当にわかりません。

5
daniel

SSHキー

まず最初に、あなたにとって最良の解決策は、新しいssh鍵ペアを作成し、この鍵を使用してすべてのサーバーに(またはいくつかは、設定​​に基づいて)ログインすることです。方法がわからない場合は、stackexchangeで何度も見つけることができますが、ショートカットは次のとおりです。

ssh-keygen; ssh-copy-id your-Host

基本的には、キーにパスフレーズを設定する必要があります。そのため、1つのパスワードで一度だけログインします。

SSHパス

しかし、もしあなたが本当にファイルからあなたのパスワードを使うことを主張するなら、あなたはコメントで説明されているように非常に簡単にそれを行うことができます:

sshpass -f /path/to/myfile ssh user@localhost

ただし、これはプレーンテキストで保存されたパスワードでsshを使用する方法としてはあまり好ましくないことに注意してください。

期待する

次のようにexpectスクリプトを使用して同じことを行うことができます:

#!/usr/local/bin/expect
spawn  ssh [email protected]
expect "password:"
send "your_password\n";
interact
12
Jakuje