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
sknit
quelle
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.

Goldlöckchen
quelle
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.

111 ---
quelle
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 .

slm
quelle
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.

Francisco Corrales Morales
quelle
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