私の放浪者コンピュータを起動し、複数の端末を開き、新しく開いた各端末でSSHを介して放浪者コンピュータに接続するスクリプトがあります。私の問題は、端末が5つほど必要ですが、各端末のパスワードを手動で入力したくないということです。デフォルトの端末で一度だけパスワードを入力し、sshコマンドで同じパスワードを使用する方法はありますか?
#!/bin/bash
cd /home/kkri/public_html/freitag/vagrant
vagrant up
for run in $(seq 1 $1)
do
gnome-terminal --window-with-profile=dark -e "ssh vagrant@localhost -p 2222" --$
done
gnome-terminal --window-with-profile=git
clear
echo "~~~ Have fun! ~~~"
ベストアンサー1
一般的に言うと(放浪者や他のシステム関連の詳細は無視されます)、最善の方法はSSHキーを使用して認証を設定し、次のssh-agent
コマンドを使用してSSHセッションを開くことです。
# load the key to the agent with a 10 s timeout
# this asks for the key passphrase
ssh-add -t10 ~/.ssh/id_rsa
for x in 1 2 3 ; do
ssh ....
done
または、鍵にアクセスできない場合は、鍵を使用して何かを組み立てることができますsshpass
。
read -p "Enter password: " -s SSHPASS ; echo
for x in 1 2 3 ; do
sshpass -e ssh ...
done
unset SSHPASS
これにより、端末が途中にあっても端末環境のパスワード設定が維持されます。この問題を解決するには、パスワードをファイルに一時的に保存できます。
read -p "Enter password: " -s SSHPASS ; echo
PWFILE=~/.ssh/secret_password
cat <<< "$SSHPASS" > "$PWFILE"
unset SSHPASS
for x in 1 2 3 ; do
sshpass -f "$PWFILE" ssh ...
done
shred --remove "$PWFILE"
パスワードがディスクに入力され、キーがより良くなる可能性があるため、まだ最善の選択肢ではありません。