Wenn man vom Mac (Windows geht natürlich auch) aus auf einen entfernten Raspberry Pi 4 B zugreifen will, kann man das auch ohne jedesmal ein Passwort eingeben zu müssen. Dafür kann das moderne ed25519 Key Verfahren verwendet werden.
Dazu muss auf dem Pi ein .ssh Verzeichnis mit einer authorized_keys Datei angelegt werden:
1 2 3 4 5 6 7 |
# wenn das <strong>.ssh</strong> Verzeichnis (Achtung, Verzeichnisname mit Punkt) noch nicht da ist, dann anlegen mit mkdir .ssh cd .ssh touch authorized_keys chmod 700 ~/.ssh/ chmod 600 ~/.ssh/authorized_keys |
Dann in der /etc/ssh/sshd_config des Pi die folgenden Einträge setzen: …
1 2 3 4 5 |
sudo vi /etc/ssh/sshd_config HostKey /etc/ssh/ssh_host_ed25519_key PubkeyAuthentication yes PasswordAuthentication yes |
Dann den SSH Service restarten und in der Konsole bleiben. Das ist wichtig, um sich nicht selbst auszusperren bei Fehler in der Konfiguration.
1 |
sudo /etc/init.d/ssh restart |
Dann einmalig auf dem Mac einen ed25519_key Key anlegen.
Dazu bin ich in das .ssh Verzeichnis gewechselt und habe einen Key nur für die Pis ohne Passwort mit dem Programm ssh-keygen generiert.
1 |
ssh-keygen -t ed25519 |
Bei der Nachfrage nach einem Passwort, einfach nur Enter eingeben.
Da ich mehrere Keys in Verwendung habe, habe ich den Key in einer neuen Datei mit anderen Dateinamen gespeichert.
Es werden nun zwei Dateien (ein asymmetrische Schlüsselpaar) generiert, die ed25519_key mit dem privaten Key und die ed25519_key.pub mit dem public Key.
Am Dateinamen kann man erkennen, was der private Key ist, der endet mit key und der public Key endet mit pub. Wenn man aber ganz sicher sein will, läßt man sich den Inhalt des Key mit cat ausgeben. Z.B. cat ed25519_key dann erhält man den private Key auf der Konsole ausgegeben, und in der ersten Zeile steht dann, das es der PRIVATE KEY ist, z.B.
1 2 3 4 5 6 |
-----BEGIN OPENSSH PRIVATE KEY----- b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW .... QyNTDIPenwfB9o...gmyAAAAKHRob21hc3dlbnpsYWZmQFRob21hcy1pTWFjLVByby5mcm l0ei5ib3gBAgMEBQ== -----END OPENSSH PRIVATE KEY----- |
Wo hingegen der Public Key bei ED nur eine Zeile enthält, z.B. cat ed25519_key.pub:
1 |
ssh-ed25519 AAAAC.....PenwfB9ogmy thomas@example.com |
Da mein default Key im Mac ein anderer ist, habe ich in der ~/.ssh/config Datei des Macs, wie hier schon mal beschrieben, um den folgenden Eintrag IdentityFile mit dem Namen für den privaten Key für die Verwendung des eben generierten Key und nicht des default Keys eingetragen:
1 2 3 4 5 |
Host vier HostName pi-vier Port 22 User pi IdentityFile ~/.ssh/ed25519_key |
Weitere Optionen zur ~/.ssh/config gibt es in der umfangreichen Referenz.
Jetzt noch den public Key vom Mac auf den Pi kopieren damit er in der ~/.ssh/authorized_keys Datei eingetragen wird, dazu in das ~/.ssh Verzeichnis wechseln und:
1 2 3 |
cd ~/.ssh cat ed25519_key.pub | ssh pi@vier 'cat>>.ssh/authorized_keys' |
Jetzt von einer anderen Konsole testen ob alles läuft. Wenn das Anmelden mit:
1 |
ssh vier |
ohne Passwort nachfrage klappt ist alles ok. Sonst in der anderen Konsole fixen, sonst sperrt man sich selbst aus.