私の放浪者コンピュータを起動し、複数の端末を開き、新しく開いた各端末で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"
パスワードがディスクに入力され、キーがより良くなる可能性があるため、まだ最善の選択肢ではありません。
答え2
vagrantを使用しているので、vagrant ssh
パスワードを入力せずにsshを実行してボックスに接続できます。複数のバグラントボックスが実行されているか、他のさまざまなアクションがある場合は、ポートの競合も処理します。
あるいは、gnome-terminalsの代わりにtmuxを使用して同期ウィンドウ機能を利用することもできます。
#!/bin/bash
tmux_name="vagrantssh-$BASHPID"
tmux new -s $tmux_name -d
for run in $(seq 1 $1); do
tmux splitw -t $tmux_name -v "ssh vagrant@localhost -p 2222"
tmux select-layout -t $tmux_name tiled
done
tmux kill-pane -t 1
tmux set-window-option -t $tmux_name synchronize-panes on
tmux select-layout -t $tmux_name tiled
tmux new-window -t $tmux_name
tmux kill-window
tmux attach -t $tmux_name
これで tmux が起動し、指定した数のポッドで ssh コマンドが実行されます。すべてのポッドは同期されます(tmuxはキーをすべてのポッドに渡します)。すべてのウィンドウで必要な操作を完了したら、[入力同期を閉じる]をctrl+b
クリックできます。:set synchronize-panes off
便宜上、キーにバインドできます。
答え3
解決策は、より安全で認証の問題を解決するキー認証を使用することです。
キーペアを生成するには、次のコマンドを使用します。
ssh-keygen -t rsa
ファイルの内容をサーバーコンピュータ~/.ssh/id_rsa.pub
にコピー/貼り付けます。~/.authorized_keys
ファイルが存在しない場合は、ユーザーの権限のみを確認してください。
私が推奨する複数の端末を使用すると、terminator
実際にこのような問題を解決できます。すべての端末にキーボードを放送特徴