Für Linux 20.04 groovy

SSH Konfig (ssh_config)

Um die Administration zu vereinfachen kann eine ssh-Konfigurationsdatei erstellt werden.

user@ubuntu:~$ cd .ssh
user@ubuntu:~/.ssh$ nano config

Die Syntax für die Konfigurationsdatei sieht folgendermassen aus, viele weitere Parameter sind möglich.

Manpage: ssh_config

Host servername
  Hostname x.x.x.x
  Port 22
  User root
  IdentityFile /path/to/keyfile.pem

Aufruf einer ssh Verbindung im Terminal mittels Befehl ssh und dem Parameter (Hostname) aus dem Configfile.

user@ubuntu:~/.ssh$ ssh servername

ssh Key Import / Export

Variante 1 mit ssh-copy-id

  • Führe den Befehl ssh-copy-id mit dem untenstehenden Parameter auf und gib das Remote System Passwort ein
  • Zur überprüfung kann die Datei authorized_keys mittels cat geöffnet werden
user@ubuntu:~/.ssh$ <strong>ssh-copy-id -i ~/.ssh/id_rsa.pub root@server
root@server:~# cd .ssh
root@server:~/.ssh# ls -l
total 1
-rw------- 1 root root 92 Apr 16 18:17 authorized_keys
root@server:~/.ssh# cat authorized_keys

Variante 2 mit cat

  • Verbinde dich mit dem Server via ssh.
  • Zeige den Inhalt der Public Key an mittels cat. Und kopiere den Inhalt in die Zwischenablage.
user@ubuntu:~/.ssh$ ls -l
-rw------- 1 user user 2655 Apr 16 18:06 id_rsa
-rw-r--r-- 1 user user 575 Apr 16 18:06 id_rsa.pub
user@ubuntu:~/.ssh$ cat id_rsa.pub
ssh user@dns
cd .ssh
bash: cd: .ssh: No such file or directory
  • Verbinde dich mittels ssh mit dem Zielserver
  • Wechsle ins Home-Verzeichnis
  • Erzeuge den Ordner .ssh, falls dieser noch nicht vorhanden ist
  • Prüfe, ob die Datei authorized_keys existiert, falls nicht, lege eine neue Datei an
  • Kopiere den Inhalt des Public Key in die Datei, speichere diese ab

KEYGEN

user@ubuntu:~$ ssh-keygen -t ed25519 -C "dns pihole"
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519): /home/user/.ssh/dns_pihole_ed25519
user@ubuntu:~$ cd .ssh
user@ubuntu:~/.ssh$ ls -l
insgesamt 16
-rw-rw-r-- 1 User User 227 Apr 16 17:59 config
-rw------- 1 User User 444 Apr 16 20:13 dns_pihole_ed25519
-rw-r--r-- 1 User User  92 Apr 16 20:13 dns_pihole_ed25519.pub
-rw-r--r-- 1 User User 444 Apr 16 18:14 known_hosts
user@ubuntu:~/.ssh$

-t für Keytype -C für Comment anstelle User und Computername am ende des pub Key

SSH Server Config (sshd_config)

Mittels systemctl kann geprüft werden ob der ssh Service serverseitig läuft.

user@server ~# systemctl status sshd
  • Für Anpassungen am ssh Server kann die Configdatei unter:
    /etc/ssh/sshd_config angepasst werden
  • Für Anpassungen der ssh Client Einstellungen (Global) kann die Configdatei unter:
    /etc/ssh/ssh_config bearbeitet werden, die Werte werden jedoch bei Verbindung mit der ssh Config des Clients überschrieben, falls vorhanden

Achtung: Mit der Anpassung des Parameters PasswordAuthentication auf den Wert no ist ein Login nur noch mit ssh Key möglich

#Port 22
PermitRootLogin yes
#PasswordAuthentication yes

SSH Agent (ssh-add)

Ein SSH-Agent sorgt dafür, dass die Passphrase zu einem Schlüssel nicht bei jeder Verbindung neu eingegeben werden muss. Dabei sind einzelne Befehle ganz praktisch.

ssh-add Manpage

  • ssh-add -D Entfernt alle Identitäten
  • ssh-add -l Listet alle Identitäten auf
user@ubuntu:~$ ssh-add -D
All identities removed.
user@ubuntu:~$ ssh-add -l
256 SHA256: xvxcxvxcxvxcvxcxvxcvxcxvxcxvcxvxvxcvxcxv Description (ED25519)

Der ssh Agent läuft bei den meisten Distro’s mit Gnome Gui automatisch, jedoch nicht bei Server Distro’s ohne Gui.

  • Mittels ps aux prüfen, ob der Agent läuft
    user@server ~# ps aux | grep ssh-agent
    
  • Mittels eval den Agent starten
    user@server ~# eval "$(ssh-agent)"
    Agent pid 12345
    
  • Mittels ssh-add Schlüssel zum Agent hinzufügen und ev. Passphrase eingeben (Gilt bis beendigung des Terminal)
    user@server ~# ssh-add ~/.ssh/xxxx
    

Datei und Verzeichnis Berechtigungen

Sind die Berechtigungen für die Verzeichnisse und Schlüssel nicht korrekt gesetzt, kann dies zu Problemen führen. Dies wird normalerweise mit folgender Fehlermeldung angezeigt:

Permissions 0777 for '/Users/username/.ssh/id_rsa' are too open.
It is recommended that your private key files are NOT accessible by others.
This private key will be ignored.

Folgende Berechtigungen sollten verwendet werden:

  • .ssh (Verzeichnis) 700 (drwx-----)
  • id_rsa (Privater Schlüssel) 644 (-rw-r-r--)
  • .pub (Öffentlicher Schlüssel) 600 (-rw-----)

Die Berechtigungen können folgendermassen angepasst werden:

chmod 700 /home/$USER/.ssh

Too many Authentication Failures

Versucht die das System sich mit zu vielen Schlüsseln anzumelden kann es sein, dass eine Fehlermeldung Too many Authentication Failures erscheint. Um dies kurzfristig zu umgehen und sich trotzdem anmelden zu können sind folgende beiden Methoden möglich.

Methode: No Public Key

user@ubuntu:~$ ssh -o PubkeyAuthentication=no root@server

Methode: Preferred Authentication Password

user@ubuntu:~$ ssh -o PreferredAuthentications=password user@server