複数のウィンドウにパスワードを入力するには?

複数のウィンドウにパスワードを入力するには?

私の放浪者コンピュータを起動し、複数の端末を開き、新しく開いた各端末で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実際にこのような問題を解決できます。すべての端末にキーボードを放送特徴

関連情報