Ich habe ein Skript, das meine vagabundierende Maschine startet, mehrere Terminals öffnet und sich in jedem neu geöffneten Terminal über ssh mit der vagabundierenden Maschine verbindet. Mein Problem ist, dass ich etwa fünf Terminals benötige und das Passwort nicht für jedes Terminal manuell eingeben möchte. Gibt es eine Möglichkeit, nur einmal im Hauptterminal nach dem Passwort gefragt zu werden und dasselbe Passwort für den ssh-Befehl zu verwenden?
#!/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 [email protected] -p 2222" --$
done
gnome-terminal --window-with-profile=git
clear
echo "~~~ Have fun! ~~~"
Akzeptierte Antwort:
Im Allgemeinen (ignorieren Sie vagrant oder andere systemspezifische Details) ist es am besten, die Authentifizierung mit SSH-Schlüsseln einzurichten und ssh-agent
auszuführen . Öffnen Sie dann die SSH-Sitzungen mit etwas wie:
# 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
Oder, wenn Sie keine Schlüssel verwenden können, könnten Sie etwas mit sshpass
manipulieren .
read -p "Enter password: " -s SSHPASS ; echo
for x in 1 2 3 ; do
sshpass -e ssh ...
done
unset SSHPASS
Obwohl sich das Terminal in der Mitte befindet, würde dies das Passwort in der Umgebung des Terminals festlegen lassen. Um dies zu umgehen, könnten Sie das Passwort vorübergehend in einer Datei speichern:
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"
Dies ist immer noch nicht optimal, da die Möglichkeit besteht, dass das Passwort auf die Festplatte trifft, also wären Schlüssel besser.