Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
SSH
Idle Session timeout
Clientseitig (wird pro SSH-Session angewendet): /etc/ssh/ssh_config
ServerAliveInterval XX ServerAliveCountMax YY
Serverseitig (wird Systemweit angewendet): /etc/ssh/ssh_config
ClientAliveInterval XX ClientAliveCountMax YY
SSH Ohne Password
Möchte man per Skript einen Befehl über ssh senden, dann würde das Skript immer nach dem Password fragen.
Wenn dieses Skript dann aber per „cron“ laufen soll, muss man hier eine andere Authentifizierungsmethode wählen: Host-Key
RSA-Key erstellen
So erstellt man einen RSA Host-Key:
ssh-keygen -t rsa
Zunächst fragt das Programm nach dem Pfad zur RSA-Datei. Diesen kann man einfach bestätigen.
Nimmt man hier aber einen anderen Dateinamen oder Pfad, muss man bei der SSH-Verbindung den Pfad explizit angeben.
ssh -i <PFAD_ZU_RSA-FILE> <REMOTE-USER>@<REMOTE-HOST>
Danach wird nach einer Passphrase gefragt.
Wenn die Passphrase leer gelassen wird, muss man sich per SSH, an dem jew. Remotehost und dem jew. User, nicht mehr mit Password anmelden.
Public-Key kopieren
Den erstellten Public-Key kopiert man einfach auf den für den jew. User auf dem Remotehost in das Verzeichnis „.ssh“.
ssh-copy-id -i ~/.ssh/id_rsa.pub <REMOTE-USER>@<REMOTE-HOST>
Wenn ssh-copy-id
nicht vorhanden ist dann kann dies auch von Hand gemacht werden.
scp .ssh/id_rsa.pub <REMOTE-USER>@<REMOTE-HOST>:<PFAD_ZU_HOMEVERZEICHNIS>/.ssh/authorized_keys
oder
cat .ssh/id_rsa.pub | ssh <REMOTE-USER>@<REMOTE-HOST> cat>> ~/.ssh/authorized_keys
Nun kann man sich per SSH an den Remotehost mit dem Host-Key anmelden.
Public-Key verteilen
Man kann den Public-Key auf mehrere hosts z.B. mit diesem Script verteilen.
#!/bin/bash SSHUSER=root SSHRSA=<PFAD_ZU_ID_RSA_PRIVATE_KEY> AUTHKEYSFILE=<PFAD_ZU_AUTHORIZED_KEY_AUF_REMOTEHOST>(für gewöhnlich: /.../.ssh/authorized_keys) echo echo echo "Dieses Skript kopiert den öffentlichen SSH-RSA Key auf den unten angegebenen PC." echo "Danach kann man sich mit einer Passphrase am PC anmelden." echo read -t 20 -p "Bitte PC-Name eingeben: " TARGETSVR function rsaright { echo "Dem PC wird aktuell nicht vertraut, oder das Authenticationfile existiert nicht." echo "Kopiere öffentlichen RSA-Key." ssh-copy-id -i $SSHRSA.pub $SSHUSER@$TARGETSVR } if ssh -i $SSHRSA $SSHUSER@$TARGETSVR "test -e $AUTHKEYSFILE"; then echo "Authenticationfile: $AUTHKEYSFILE existiert." ssh -i $SSHRSA $SSHUSER@$TARGETSVR "cat $AUTHKEYSFILE |grep root@ng1" > /dev/null 2>&1 if [ $? -eq 0 ]; then echo "Dem Zielserver wird vertraut, man kann sich nun per Passphrase authentifizieren." else rsaright fi else rsaright fi
Troubleshooting
Wenn bei einer Verbindung folgende Antwort kommt:
Unable to negotiate with <IP-ADRESSE> port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1
Folgendes in die /etc/ssh/ssh_config
einfügen und ssh neustarten:
KexAlgorithms diffie-hellman-group1-sha1,curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1 Ciphers 3des-cbc,blowfish-cbc,aes128-cbc,aes128-ctr,aes256-ctr