ssh komfortabel

Das ist ja eigentlich kein Raspi-spezifisches Thema - passt aber so gut hierher ... Die nachfolgenden Abläufe kannst Du auf jedem Linux-System nutzen.
Nach dem initialen Einrichten eines Raspi kümmere ich mich zuerst um den ssh-Zugriff ohne Passwort - dazu wird ein Public-/Private-Key-Verfahren genutzt. Das hat mehrere Gründe:

  • Komfort: Ich melde mich nur per ssh auf meinen Servern an, da will ich nicht jedesmal ein Passwort eingeben müssen (nicht mal, wenn ich das in einem Passwort-Tresor habe)
  • Sicherheit I: Mit Key-Authentifizierung kommen nur die Rechner und User auf den Server, deren Public Key der kennt.
  • Sicherheit II: Ich muss mich nicht um sichere Passwörter kümmern.
  • Sicherheit III: Ich nutze Apache Ant aus der IDE heraus, um z. B. Code-Änderungen auf die Server zu bringen (scp oder rsync). So muss ich keine Passwörter in den Build-Scripts hinterlegen.
Auf dem Client

Du hast bisher noch kein Key Pair angelegt? Schäm Dich :-) Ich musste mir extra einen Testuser anlegen, um den Prozess noch mal nachvollziehen zu können ...

probe@luke:~> ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/probe/.ssh/id_rsa): 
Created directory '/home/probe/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/probe/.ssh/id_rsa
Your public key has been saved in /home/probe/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:........................................... probe@luke
The key's randomart image is:
...
probe@luke:~> ls -la .ssh
insgesamt 16
drwx------ 2 probe users 4096 30. Jan 23:25 .
drwxr-xr-x 8 probe users 4096 30. Jan 23:25 ..
-rw------- 1 probe users 2590 30. Jan 23:25 id_rsa
-rw-r--r-- 1 probe users  564 30. Jan 23:25 id_rsa.pub
Die Passphrase lasse ich im lokalen Netz leer; wenn es um Zugriffe draußen in der Wildnis geht, dann wird ein neues Key Pair mit Passwort generiert.

Transfer

Den Public Key (niemals den privaten! Der bleibt im .ssh-Verzeichnis und wird nur für ein Backup auf ein sicheres Medium - z. B. einen USB-Stick - mal angefasst) kopierst Du dann auf den Raspi.

scp ~/.ssh/id_rsa.pub [raspi-name]:/home/[user]
Da musst Du dann - wenn alles gut geht zum letzten Mal - das Passwort eingeben.

Auf dem Raspi

# create .ssh directory and set permissions (required by ssh deamon)
mkdir .ssh && chmod 700 .ssh
# create file authorized_keys and set permissions
touch .ssh/authorized_keys && chmod 600 .ssh/authorized_keys
# append client public key content to authorized_keys
# can be repeated for public keys from other clients
cat id_rsa.pub >>.ssh/authorized_keys
# remove public key source file
rm id_rsa.pub
user@raspi-name:~ $ ls -la .ssh
insgesamt 12
drwx------  2 pi pi 4096 13. Mär 2022  .
drwxr-xr-x 10 pi pi 4096 17. Apr 2022  ..
-rw-------  1 pi pi 1686 17. Apr 2022  authorized_keys

Der spannende Moment: in einem 2. Terminal (wichtig: Bleib im 1. angemeldet, sonst sperrst Du Dich womöglich aus) meldest Du Dich neu auf dem Raspi an. Wenn alles geklappt hat, dann bist Du ohne Passwort drin.

So, alles paletti, oder? Nicht ganz - ein Login mit Passwort ist nach wie vor möglich. Das kannst Du noch deaktivieren: Öffne in Deinem Lieblingseditor (also definitiv vim ;-) die Datei /etc/ssh/sshd_config. Dort suchst Du nach der Zeile
#PasswordAuthentication yes und änderst die so:
PasswordAuthentication no
Dann noch fix den sshd neu starten: sudo /etc/init.d/ssh restart