bash: /home/user/.ssh/authorized_keys: Brak takiego pliku lub katalogu

11

Utwórz klucz ssh:

$ ssh-keygen -t rsa P ""

Przeniesienie klucza do autoryzowanego klucza:

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

bash: /home/user/.ssh/authorized_keys: No such file or directory
sknit
źródło
To samo pytanie, dlaczego musisz dodać klucz do swojego hosta?
Braiam
@Braiam Zrobiłem to, gdy mój katalog domowy znajdował się na dysku sieciowym. Pozwoliło mi to na ssh do dowolnej maszyny, która zamontowała ten dysk. Więc nie wysyłałem wiadomości do własnego hosta.
FDinoff

Odpowiedzi:

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

Element ścieżki /home/user/.ssh/nie istnieje; shell ( bash) sprawdza przekierowanie ( >>) przed wykonaniem polecenia ( cat). Jeśli /home/useristnieje i spróbuj tego:

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

Otrzymasz teraz:

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

Ponieważ ten plik nie może znajdować się w tym miejscu, jeśli /home/user/.ssh/nie istniał, na początek.

Postępujesz zgodnie z instrukcjami, prawdopodobnie pomijając niektóre bity. Aby utworzyć katalog:

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

Jednak id_rsa.pubnie będzie. Będzie to miejsce, w którym uruchomiłeś ssh-keygenpolecenie.

Złotowłosa
źródło
6

Upewnij się, że jesteś zalogowany jako użytkownik, dla którego chcesz najpierw utworzyć klucz ssh (lub przygotuj się na modyfikację ścieżek w poleceniu do właściwego katalogu domowego).

Następnie po prostu utwórz katalog:

mkdir ~/.ssh

Utwórz plik za pomocą catpolecenia wymienionego powyżej. Nie zapomnij więc poprawnie ustawić uprawnień:

chmod 400 ~/.ssh/authorized_keys

Możesz również upewnić się, że katalog .ssh ma również odpowiednie uprawnienia.

111 ---
źródło
1
Jak sugeruje twój ostatni komentarz, tak, uważam, że musiszchmod 700 ~/.ssh
KCD
6

Jeśli to możliwe, zawsze zachęcam ludzi do korzystania z narzędzia wiersza poleceń ssh-copy-id.

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

Jeśli chcesz po prostu skopiować domyślny klucz publiczny SSH do zdalnego serwera, po prostu uruchom następujące polecenie:

$ ssh-copy-id user@remoteserver

W tym pytaniu z pytaniami pokazuję pełny przykład użycia tego narzędzia: Nie mogę udostępnić połączenia ssh z rsync .

slm
źródło
0

Może się to również nie powieść, jeśli podczas tworzenia klucza ssh-keygenpodasz mu nazwę pliku. Wpisałem jakąś nazwę my-ssh-file-name, a /Users/MyUserNamezamiast tego napisałem klucz do .ssh. Jeśli nazwa pliku pozostanie pusta, zostanie zapisany .sshzgodnie z oczekiwaniami.

Francisco Corrales Morales
źródło
lub oczywiście możesz określić, aby zapisać niestandardowy klucz bezpośrednio w folderze .ssh:-f ~/.ssh/custom-key-name
parlament