28 Mar 2010

SSH: dem Server via Schlüssel für einen passwortlosen Login vertrauen

Wenn man einen erzeugten privaten Schlüssel auf den Remote-Server kopiert, kann man sich in Zukunft ohne Passwort einloggen:

Dazu auf dem eigenen Gerät dies ausführen:

local:~# ssh-keygen -t dsa

Den erzeugten Public-Key auf den Remote Host kopieren, und zur authorized_keys Datei hinzufügen:

local:~# scp ~/.ssh/id_dsa.pub remote_host:/
local:~# ssh remote_host
remote_host:~# touch ~/.ssh/authorized_keys
remote_host:~# cat id_dsa.pub >> ~/.ssh/authorized_keys
remote_host:~# rm id_dsa.pub

Alternative Möglichkeit, um dies zu tun:

cat ~/.ssh/*.pub | ssh user@remote-system 'umask 077; cat >> ~/.ssh/authorized_keys'

Komfortabel ist es, wenn man das Programm ssh-copy-id besitzt:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote-system

Update 2019: Der ursprüngliche Eintrag ist vom Jahr 2010, mittlerweile wird DSA als potentiell unsicher eingestuft, bitte ECDSA verwenden! Vorher aber überprüfen, ob alle Geräte das können, und SSH aktualisieren.

  • Abhilfe bei dieser Fehlermeldung: Could not open a connection to your authentication agent

Szenario:

[chrissie@gliese1 ~]$ ssh-copy-id new.server.example.com
Could not open a connection to your authentication agent.
no keys found
  • Erklärung des Fehlers

Der SSH-Agent muss im Hintergrund gestertet werden, und der private Schlüssel muss zum ssh-Agenten hinzugefügt werden

  • Abhilfe mit C-Shell:
[chrissie@gliese1 ~]$ eval "$(ssh-agent -s)"
Agent pid 27018
[chrissie@gliese1 ~]$ ssh-add
Identity added: /home/chrissie/.ssh/id_rsa (chrissie@gliese1)
[chrissie@gliese1 ~]$ ssh-copy-id new.server.example.com
Password for chrissie@new.server.example.com:
  • Abhilfe mit Bash:
[chrissie@gliese1 ~]$ eval `ssh-agent -s`
Agent pid 27195
[chrissie@gliese1 ~]$ ssh-add
Identity added: /home/chrissie/.ssh/id_rsa (chrissie@gliese1)
[chrissie@gliese1 ~]$ ssh-copy-id new.server.example.com
Password for chrissie@new.server.example.com: