手動でキーチェーンをインストールして実行する

手動でキーチェーンをインストールして実行する

parallel-ssh(および関連ツール)操作を実行するときにパスワードで保護されたSSHキーを使用したいと思います。しかし、私はそれを動作させることはできません。

すべての関連文書によると、以下を使用または実行できるparallel-ssh必要があります。--askpass-A

-A
--askpass
      Prompt  for  a  password  and pass it to ssh.  The password may be 
      used for either to unlock a key or for password authentication.  The 
      password is transferred in a fairly secure manner (e.g., it will not 
      show up in argument lists).  However, be aware that a root user on 
      your system could potentially intercept the password.

ただし、キーのパスワードを入力しても機能しません。

$ parallel-ssh --hosts=machines --user=my_user --askpass \
    --timeout=0 --inline -v 'sudo apt-get update'
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 09:59:36 [FAILURE] amritiii Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[2] 09:59:37 [FAILURE] gbdev Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[3] 09:59:37 [FAILURE] code Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[4] 09:59:37 [FAILURE] apollo Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[5] 09:59:37 [FAILURE] odin Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[6] 09:59:37 [FAILURE] hathor Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[7] 09:59:37 [FAILURE] ldap Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[8] 09:59:37 [FAILURE] thor Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).
[9] 09:59:37 [FAILURE] bioserver Exited with error code 255
Stderr: Enter passphrase for key '/home/nhaigh/.ssh/id_rsa': 
Permission denied (publickey,password).

私のSSHキーとパスワードが各コンピュータで有効であることを確認しましたが、どのように機能させるのかわかりません。

答え1

とが同等parallel-sshだと仮定するとpssh、そうです。やりたいことは、スイッチを使用するときにパスワードをパイピングするのに適しています-A

はい

これは2つの異なるシステムに接続する例であり、host1基本ユーザーを提供するためにスイッチをhost2使用しています。しかし、ホスト名を 。-lpsshroothost2-Huser1@host2

$ pssh -A -i -H "host1 user1@host2" -l root 'echo "hi"'
Warning: do not enter your password if anyone else has superuser
privileges or access to your account.
Password: 
[1] 21:38:00 [SUCCESS] user1@host2
hi
Stderr: 
This is a private site.  Unauthorized connections are prohibited.  
All activity may be logged.  Disconnect immediately if you object to 
this policy or are not an authorized user.

X11 forwarding request failed on channel 1
Killed by signal 1.
[2] 21:38:00 [SUCCESS] host1
hi
Stderr: 
This is a private site.  Unauthorized connections are prohibited.  
All activity may be logged.  Disconnect immediately if you object to 
this policy or are not an authorized user.

ControlSocket /home/user1/.ssh/[email protected]:22 already exists, disabling multiplexing
X11 forwarding request failed on channel 0
Killed by signal 1.

上記の操作が正常に機能している間、私が実行しているコマンドの出力が表示されますecho "hi"

あなたの問題

SSHキーペアで発生するパスワードの問題は、エラーが原因で発生します。このエラーのタイトルは次のとおりです。Q80:パスワードが合格していませんか?。質問に対する4番目のコメントはパッチを示しています。

抜粋

#4[Eメール保護]

私はその行を次のように変更しました。

  if not ( prompt.strip().lower().endswith('password:') or 
        'enter passphrase for key' in prompt.strip().lower()):

これは効果があると思います。

引用する

答え2

keychain手動でパッチを適用する代わりにインストールして動作させました。抜け穴私の質問が発生します。

手動でキーチェーンをインストールして実行する

# install keychain package
$ sudo apt-get install keychain

# add my key to the keychain, entering passphrase when asked
$ keychain ~/.ssh/id_rsa

# source the file generated by the above command
$ . ~/.keychain/$(uname -n)-sh

パスワード/パスワードフレーズを入力せずにコマンドを実行する

parallel-ssh今回はキーチェーンが認証を処理するため、呼び出し時にパスワードは必要ありません。

$ parallel-ssh --hosts=machines --user=my_user --timeout=0 'sudo apt-get update'
[1] 14:52:15 [SUCCESS] amritiii 
[2] 14:52:17 [SUCCESS] odin
[3] 14:52:25 [SUCCESS] gmod
[4] 14:53:11 [SUCCESS] bioserver
[5] 14:53:14 [SUCCESS] thor
[6] 14:53:14 [SUCCESS] apollo
[7] 14:53:16 [SUCCESS] gbdev
[8] 14:53:17 [SUCCESS] code
[9] 14:53:18 [SUCCESS] hathor
[10] 14:53:34 [SUCCESS] ldap

ログイン時にキーチェーンを実行する

キーチェーンにキーを手動で実行して追加するのではなく、最後に以下を追加してください~/.bash_profile

$ keychain --clear $HOME/.ssh/id_rsa
$ . $HOME/.keychain/$(uname -n)-sh

これにより、再起動後に初めてログインしたときにキーパスワードの入力を求められます。これにより、次の再起動まで、またはキーチェーンを手動で消去するまで、キーはキーチェーンに残ります。

キーチェーンを使用したクローン操作

上記の内容をファイルに入力すると、~/.bash_profilecronjobを実行する前に同じファイルをソートして、キーがキーチェーンに保存されるという事実を利用できます。たとえば、毎晩21:00に実行され、SSH経由でリモートシステムにコンテンツをコピーするバックアップスクリプトがあります。これは私のcrontab()のエントリですcrontab -e

 0 21 * * * . $HOME/.keychain/$(uname -n)-sh; $HOME/backup_script.sh

答え3

使用SSHエージェント自動的に認証します(シェル名を引数として使用し、新しいシェルでプロキシ環境変数を設定します)。キーを追加SSHを追加そしてパスワードは一度だけ入力してください。

$ ssh-agent bash
$ ssh-add
Enter passphrase for /xxxx/.ssh/identity: 
$ 
$ pssh ...

関連情報