ssh-add
Arch Linuxですべてのrsaキーを自動的にロック解除するスクリプトを作成しようとしています。
私はパスワード(gpgキーを使用して暗号化されています)を保存するために使用しており、入力内容を次に渡したいと思いますpass
。ssh-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
思います。