xclipを使う

xclipを使う

ssh-addArch Linuxですべてのrsaキーを自動的にロック解除するスクリプトを作成しようとしています。

私はパスワード(gpgキーを使用して暗号化されています)を保存するために使用しており、入力内容を次に渡したいと思いますpassssh-add

rsa_dir=~/.ssh
cd $rsa_dir
ls -1 id_rsa* |
grep -v '.pub' |
while read file; do
  # example: file == id_rsa_github -> keyname == rsa/github
  key_name=${file/id_rsa_/rsa/}
  # pass will prompt (only once) for the master password, then print out the request password to stdout
  pass $key_name | ssh-add $file
done

ただし、エラーが発生します。

ssh_askpass: exec(/usr/lib/ssh/ssh-askpass): No such file or directory

しかし、ただ実行すると、ssh-add $fileパスワードの入力を求められ、正常に動作します。パスワードを取得するためにデフォルトのssh-askpassを使用したくありません。私のスクリプトを使用する必要があります。

誰でも私を助けることができますか?

ベストアンサー1

私もあなたと同じ状況で、これを行う2つの方法を見つけました。

xclipを使う

pass yourpassword | xclip -selection clipboard ; ssh-add yourprivatekey

その後、通常、パスワードを貼り付けるために使用するキーを使用します。覚えておいてください。クリップボードしたがって、あなたが唯一のユーザーでない場合/信頼できないネットワークにいる場合、第三者はあなたのパスワードを知ることができます。

期待を活用する

PASS=`pass yourpassword`
/usr/bin/expect <<EOF
set timeout -1
spawn ssh-add privatekey
match_max 100000
expect -exact "Enter passphrase for ~/.ssh/privatekey: "
send -- "$PASS\r"
expect eof
EOF

動作する必要があります。上記の秘密鍵パスを自由に変更したり、ある種のautoexpect作業スクリプトを生成したりする必要があるスクリプトで使用してください。ssh-add yourprivatekey

他のアイデア

私がテストしていないか、正しく動作しなかったのは次のとおりです。

  • 実行中のセッションにキーを送信する方法はいくつかscreenあります。tmux

  • xclip上記の方法で役立つキーを送信するために使用できるいくつかのコマンドがあります。sendkey存在するフラッグハブxdotool思います。

おすすめ記事