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


11

Erstellen Sie einen SSH-Schlüssel:

$ ssh-keygen -t rsa P ""

Verschieben des Schlüssels zum autorisierten Schlüssel:

$ cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

bash: /home/user/.ssh/authorized_keys: No such file or directory

Gleiche Frage, warum müssen Sie den Schlüssel Ihrem eigenen Host hinzufügen?
Braiam

@Braiam Ich habe dies getan, als sich mein Home-Verzeichnis auf dem Netzlaufwerk befand. Dadurch konnte ich auf jeden Computer ssh, der dieses Laufwerk bereitstellte. Also ging ich nicht zu meinem eigenen Gastgeber.
FDinoff

Antworten:


13
bash: /home/user/.ssh/authorized_keys: No such file or directory

Ein Element des Pfades /home/user/.ssh/existiert nicht; Die Shell ( bash) überprüft die Umleitung ( >>), bevor sie den Befehl ( cat) ausführt . Wenn /home/useres existiert und Sie versuchen dies:

cat $HOME/.ssh/id_rsa.pub >> $HOME/test_this

Sie erhalten jetzt:

cat: /home/user/.ssh/id_rsa.pub: No such file or directory

Da sich diese Datei nicht an diesem Ort befinden kann, wenn sie /home/user/.ssh/zunächst nicht vorhanden war.

Sie folgen einigen Anweisungen, die möglicherweise einige Teile übersprungen haben. So erstellen Sie das Verzeichnis:

mkdir $HOME/.ssh
chmod 700 $HOME/.ssh

Allerdings id_rsa.pubwird nicht da sein. Es wird überall dort sein, wo Sie den ssh-keygenBefehl ausgeführt haben.


6

Stellen Sie sicher, dass Sie als der Benutzer angemeldet sind, für den Sie zuerst den SSH-Schlüssel erstellen möchten (oder seien Sie bereit, die Pfade im Befehl zum richtigen Ausgangsverzeichnis zu ändern).

Dann erstellen Sie einfach das Verzeichnis:

mkdir ~/.ssh

Erstellen Sie die Datei mit dem catoben aufgeführten Befehl. Vergessen Sie dann nicht, die Berechtigungen richtig einzustellen:

chmod 400 ~/.ssh/authorized_keys

Möglicherweise möchten Sie sicherstellen, dass das Verzeichnis .ssh auch über die entsprechenden Berechtigungen verfügt.


1
Wie Ihr letzter Kommentar andeutet, müssen Siechmod 700 ~/.ssh
KCD

6

Wenn möglich, ermutige ich die Leute immer, das Kommandozeilen-Tool zu verwenden ssh-copy-id.

$ ssh-copy-id -h
Usage: /usr/bin/ssh-copy-id [-i [identity_file]] [user@]machine

Wenn Sie nur Ihren öffentlichen Standard-SSH-Schlüssel auf einen Remote-Server kopieren möchten, führen Sie einfach den folgenden Befehl aus:

$ ssh-copy-id user@remoteserver

Ich zeige ein aktuelles vollständiges Beispiel für die Verwendung dieses Tools in diesen Fragen und Antworten mit dem Titel: Eine SSH-Verbindung kann nicht mit rsync geteilt werden .


0

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


oder natürlich können Sie angeben, dass der benutzerdefinierte Schlüssel direkt in den .ssh-Ordner geschrieben werden soll:-f ~/.ssh/custom-key-name
Parlament
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.