Siehe z.B. Securing Home Assistant, Sichere SSH Konfiguration und Absicherung eines Debian Servers.
Anmerkung: Falls ssh nicht installiert ist, mit
sudo apt-get install ssh
installieren. Sollte der Dienst sich nicht automatisch starten, den Befehlsudo update-rc.d ssh defaults
ausführen.
Um den login für den Nutzer root zu deaktivieren, wird in der Datei /etc/ssh/sshd_config
die Zeile PermitRootLogin prohibit-password
aktiviert; nun ist auch bei Kenntnis des root-Kennwortes keine Anmeldung über ssh möglich.
Anmerkung: Bei mir war die Anmeldung auch vorher nicht möglich.
In der Konfigurationsdatei /etc/ssh/sshd_config
einen Port oberhalb von 1023 eintragen.
[...]
Port 53122
#AddressFamily any
[...]
Nun noch mit sudo service ssh restart
den ssh-Dämon neu starten, damit die geänderte Konfiguration aktiv wird. Ab jetzt muss bei jedem Remote Login der Port mit angegeben werden:
ssh [email protected] -p 53122
Zuerst wird auf dem Client das Schlüsselpaar - bestehend aus public und private key - generiert und anschließend der public key zum Server übertragen. Der Private Schlüssel sollte mit einem Kennwort gesichert werden.
Schlüsselpaar generieren:
ssh-keygen -b 4096 -f ~/.ssh/pi_rsa
Öffentlichen Schlüssel auf den Ziel-Server übertragen:
ssh-copy-id -i ~/.ssh/pi_rsa.pub -p 53122 [email protected]
Da es lästig ist, immer wieder das Kennwort für den private key eingeben zu müssen, kann man diesen in der keychain des eigenen Clients speichern. Unter MacOS sieht geschieht dies mit:
ssh-add -K ~/.ssh/pi_rsa
Von nun ist es möglich, von diesem Client den Pi ohne Eingabe eines Kennwortes zu erreichen. Auch das passende Zertifikat wird automatisch gefunden:
ssh -p 53122 [email protected]
sftp -P 53122 [email protected]
scp -P 53122 /tmp/tst [email protected]:/tmp/tst
Nach einem Update meines Macs auf Mojave funktionierte der ssh-Login nicht mehr. Abhilfe schuf das Kommando ssh-add ~/.ssh/pi_rsa
:
ssh-add ~/.ssh/pi_rsa
Enter passphrase for /Users/hajo/.ssh/pi_rsa:
Identity added: /Users/hajo/.ssh/pi_rsa (/Users/hajo/.ssh/pi_rsa)
Achtung: Wenn dies durchgeführt ist, kann man den Pi über ssh nicht mehr ohne die Private-Key-Datei erreichen!
In der Konfigurationsdatei /etc/ssh/sshd_config
den Schlüssel PasswordAuthentication
auf no
setzen.
[...]
# To disable tunneled clear text passwords, change to no here!
PasswordAuthentication no
#PermitEmptyPasswords no
[...]
Nun wie schon bekannt, den ssh-Dämon neu starten:
sudo service ssh restart
Ein Anmeldeversuch von einem Rechner ohne Zertifikat führt nun zu:
[email protected]: Permission denied (publickey).
Wenn man nun einen weiteren Client zulassen möchte, muss man kurzfristig den ssh-login mit Kennwort wieder aktivieren.
Als nächstes wird der Internetzugriff auf die FritzBox zugelassen.