SSH

Aus Mediawiki Ferdinand Gruber
Zur Navigation springen Zur Suche springen

Konfiguration

Der SSH Server wird konfiguriert in /etc/ssh/sshd_config

  • Authentifizierung über Passwort erlauben
       # To disable tunneled clear text passwords, change to no here!
       PasswordAuthentication yes
       # PermitEmptyPasswords no
  • Neustart des Servers mit Runlevel Editor oder:
       /etc/init.d/sshd restart
       # oder
       rcsshd restart
  • Putty konfigurieren, wegen yast und midnight commander
       Connection:      Terminal-type String = linux
                        Auto-login username = root
       Translation:     UTF-8

Troubleshooting

Server reagiert mit langer Antwortzeit

Eventuell die Schnittstelle fix definieren, auf der der Server lauscht.

# /etc/ssh/sshd_conf
ListenAddress 10.0.0.82

... oder

# /etc/ssh/sshd_conf
UseDNS no

Authentifikation über Schlüsselpaare

  • Am SSH Client Schlüsselpaar generieren
ssh-keygen -t rsa
ssh-keygen -t rsa -C "root@clientHostname"
Alle Eingaben mit <Enter> bestätigen. Es wird in diesem Fall ein Key ohne Sicherung durch eine Passphrase erzeugt.
Der öffentliche und der private Schlüssel befinden sich nun in ~/.ssh
-rw-------   1 root root 887 2007-11-22 17:56 id_rsa
-rw-r--r--   1 root root 221 2007-11-22 17:56 id_rsa.pub
  • Den öffentlichen Schlüssel zum SSH Server kopieren
scp -p id_rsa.pub 10.80.12.2:.ssh/authorized_keys

Wenn mehrere öffentliche Schlüssel in .ssh/authorized_keys gespeichert werden sollen, dann ...

scp -p id_rsa.pub remoteHost:~/new_key

... und anschließend am Server

cat ~/new_key >> ~/.ssh/authorized_keys
rm ~/new_key

Das Kopieren geht auch mit dem Befehl

ssh-copy-id username@remoteHost 
  • Den öffentlichen Schlüssel auf dem Client-System löschen

Unter Debian ist es anscheinend nötig, dass man auf dem Client den öffentlichen Schlüssel löscht

rm /root/.ssh/id_rsa.pub
  • Zugriffsrechte ändern:
chmod 600 ./ssh/authorized_keys
  • Weitere Infos

http://www.hjp.at/doc/ssh-client-mini-howto.html http://www.hjp.at/doc/ssh-client-mini-howto.html

https://www.howtoforge.com/set-up-ssh-with-public-key-authentication-debian-etch/#comments

Passwort Authentifizierung

Möchte man sich als Benutzer root mit Passwort anmelden:

# /etc/ssh/sshd_config
PasswordAuthentication yes
PermitRootLogin yes
usePAM no

Nun den SSH Server neu starten

systemctl restart ssh.service

SSH Login als root von einem Ubuntu Client

Da man sich unter Ubuntu nicht als root einloggen kann, werden immer die Schlüsselpaare des angemeldeten Benutzers verwendet.

Mit folgendem Workaround ist es mir gelungen, eine Verbindung ohne Passwortabfrage als root am entfernten System herzustellen.
  • Schlüsselpaare für root erzeugen
sudo ssh-keygen -t rsa
  • Die SSH-Schlüssel in das Benutzerverzeichnis kopieren
#Beispiel
username=myName
sudo cp /root/.ssh /home/$username/
  • Schlüssel zum entfernten Host kopieren
remoteHost=10.0.0.111
sudo ssh-copy-id root@remoteHost

Putty konfigurieren

  • Putty.exe ist ein SSH Client für Windows

Downwload und Installation der Putty Suite von

http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.60-installer.exe
  • Mit PuttyGen.exe ein Schlüsselpaar erzeugen. Key speichern, z.B.:
H:\Putty-private-key.ppk
H:\Putty-puplic-key - muss nicht gespeichert werden, wenn untenstehende Vorgangsweise gewählt wird.

Key ohne Passphrase erzeugen, wenn die Sicherheit 100 prozentig ist ;-)

  • Über clipboard den Public Key in folgende Datei eintragen (am Server):
~/.ssh/authorized_keys
  • Wenn eine Passphrase für den Private Key verwendet wurde, dann sollte "Pageant.exe" aus der Putty Suite gestartet werden. Aufruf in Autostart. Damit ist es nicht notwendig, bei jedem Verbindungsaufbau über Schlüsselpaare die Passprase einzugeben.

SSH auf ein bestimmtes Kommando beschränken

Auf dem Server in die Datei ~/.ssh/authorized_keys vor dem eigentlichen Schlüssel folgendes einfügen:

# command="das Kommando eingeben" Hier steht der Schlüssel ...
# Beispiel: 
command="rsync --server --sender -vlogDtprz --delete-excluded --numeric-ids . /"

Um den Wortlaut des Befehls zu erhalten, auf dem Client folgendes eingeben:

ps axw | grep rsync

Kommando als Eingabeparameter

Folgender Befehl erstellt eine neue Datei auf dem Zielrechner

ssh user@Zielrechner touch "newfile.txt"

Wechseln in ein bestimmtes Verzeichnis nach dem Login

Das funktioniert nicht über einen Eingabeparameter, da nach Ausführung des Befehls die Sitzung gleich wieder geschlossen wird.

Konfiguration am Zielrechner:
# ~/.profile
cd /mein/ziel/verzeichnis

Kommando nach Beendigung der Sitzung weiter ausführen

Vor ein Kommando den Befehl nohup stellen.

# Beispiel
nohup bak_sh auto shutdown

Mehrere Kommandos hintereinander ausführen:

nohup bash -c "for nr in 1 2 3 4 ; do rm backup.$nr -R ; done"