bash: /home/user/.ssh/authorized_keys: Keine solche Datei oder kein solches Verzeichnis


30

Erstellen Sie einen SSH-Schlüssel:
Befehl:

ssh-keygen -t rsa –P ""

Verschieben des Schlüssels auf autorisierten Schlüssel:
Befehl:

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
bash: /home/user/.ssh/authorized_keys: No such file or directory

1
~/.ssh/authorized_keyssind Schlüssel anderer Computer, mit denen Sie verbunden sind / denen Sie vertrauen, nicht Ihr eigener Schlüssel.
Saiarcot895

Einige Anwendungen erfordern passwortloses ssh auf dem eigenen Rechner.
Nehal J Wani

Stellen Sie nicht dieselbe Frage auf mehreren Websites des Stack Exchange-Netzwerks.
Terdon

Warum müssen Sie dem Schlüssel vertrauen, den Sie besitzen? Was genau versuchst du zu tun?
Braiam

Antworten:


74

Sie müssen das .sshVerzeichnis und die authorized_keysDatei das erste Mal erstellen .

  1. Erstellen Sie das .sshVerzeichnis:

    mkdir ~/.ssh
    
  2. Legen Sie die richtigen Berechtigungen fest:

    chmod 700 ~/.ssh
    
  3. Erstellen Sie die authorized_keysDatei:

    touch ~/.ssh/authorized_keys
    
  4. Legen Sie die richtigen Berechtigungen fest:

    chmod 600 ~/.ssh/authorized_keys
    

Die Berechtigungen sind wichtig! Ohne die richtigen Berechtigungen geht es nicht!

Jetzt können Sie den öffentlichen Schlüssel zur authorized_keysDatei hinzufügen :

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

Sie müssen den öffentlichen Schlüssel Ihres Computers zur authorized_keysDatei des Computers hinzufügen, auf den Sie mit SSH-Schlüsseln zugreifen möchten !


Wie von terdon erwähnt, können Sie auch einfach diesen Befehl verwenden:

ssh-copy-id user@host

Dadurch wird Ihr id_rsa.pub(in Ihrem ~/.sshVerzeichnis) in die authorized_keysDatei des Remotecomputers gestellt , und das .sshVerzeichnis und die authorized_keysDatei werden bei Bedarf mit den richtigen Berechtigungen erstellt.


5
Auf jeden Fall wollen Sie es nicht einfach catso, dafür ssh-copy-idist es da.
Terdon

1
Wow, cool, ich habe es hinzugefügt.
Louis Matthijssen

@LouisMatthijssen Ich habe die Schlüssel auf meinen Remote-Server kopiert. Wie kann ich bestätigen, dass der öffentliche Schlüssel in authorized_keys hinzugefügt wurde?
Aman,

2

Falls Sie den öffentlichen Schlüssel in einer E-Mail zur Installation auf einem Remote-Server erhalten haben:

1) SSH in den Server. Ich habe PuTTY unter Windows verwendet.

2) Richten Sie den Schlüssel ein:

mkdir ~/.ssh
chmod 700 ~/.ssh
vi ~/.ssh/authorized_keys

Achten Sie darauf, den Schlüssel genau zu kopieren und in eine neue Zeile im Editorfenster einzufügen. Stellen Sie sicher, dass es eine einzelne Zeile belegt, und speichern Sie.

chmod 600 ~/.ssh/authorized_keys

2

Da ich nicht genug Ansehen habe, füge ich dies hier hinzu. Zusätzlich zur Antwort von Louis Matthijssen, wenn Sie sich immer noch nicht über ssh als ein Benutzer anmelden können, den Sie erstellt haben, wie

ssh username@host

Dies liegt möglicherweise an der fehlenden Berechtigung des Besitzers , die Sie Ihrem Ordner /home/username/.ssh hinzufügen müssen. Ich hatte das gleiche Problem und Sie können diese Erlaubnis erteilen als:

chown -R username:username /home/username/.ssh

Dies kann wahrscheinlich einfach deshalb geschehen, weil Sie das Verzeichnis erstellt und die Berechtigungen als root festgelegt haben , aber nicht als Benutzername, mit dem Sie auf den Server zugreifen möchten.

Hoffe das hilft jemandem.


0

Versuchen

 touch $HOME/.ssh/authorized_keys

um eine leere Datei mit den Rechten dieses Benutzers zu erstellen.

Diese Datei wird erstellt, wenn Sie zum ersten Mal mit diesem Benutzer auf einen Remote-Host zugreifen.


0

Dies kann auch fehlschlagen, wenn Sie beim Erstellen des Schlüssels ssh-keygeneinen Dateinamen vergeben. Ich habe einen Namen eingegeben my-ssh-file-nameund er hat den Schlüssel zu /Users/MyUserNameanstelle des .sshOrdners geschrieben. Wenn Sie den Dateinamen leer lassen, wird .sshwie erwartet darauf geschrieben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.