jak utworzyć klucz ssh dla innego użytkownika?


89

Próbuję utworzyć klucz ssh dla innego użytkownika. Jestem zalogowany jako root. Czy mogę po prostu edytować pliki wygenerowane przez ssh-keygen i zmienić użytkownika root na żądanego użytkownika?


5
Jeśli generujesz klucz dla użytkownika, musisz również mieć bezpieczną metodę uzyskania klucza prywatnego i jego hasła do użytkownika. O wiele lepiej użytkownik generuje klucz, a następnie po prostu przesyła kluczem e-mail.
user9517,

Ale czy nie jest to trudne, czy nie zezwalasz na logowanie się za pomocą hasła? Jeśli jestem tylko kluczem i skonfigurowałem nowego użytkownika, nie mogą się zalogować, aby skonfigurować swój klucz.
LVLAaron,

Odpowiedzi:


79

Można to jednak zrobić ssh-keygen, pamiętając jednak, że klucz prywatny ma być prywatny dla użytkownika, dlatego należy bardzo uważać na jego bezpieczeństwo - tak bezpieczne, jak hasło użytkownika. A nawet bezpieczniej, ponieważ użytkownik prawdopodobnie nie będzie musiał go zmieniać przy pierwszym logowaniu.

ssh-keygen -f anythingtworzy dwa pliki w bieżącym katalogu. anything.pubto klucz publiczny, który możesz dołączyć do użytkownika ~/.ssh/authorized_keysna dowolnym serwerze docelowym.

Drugi plik, tak zwany, anythingjest kluczem prywatnym i dlatego powinien być bezpiecznie przechowywany dla użytkownika. Domyślna lokalizacja to ~username/.ssh/id_rsa(tutaj o nazwie id_rsa, która jest domyślna dla kluczy rsa). Pamiętaj, że .sshkatalog nie może być odczytywany ani zapisywany przez nikogo oprócz użytkownika, a katalog domowy użytkownika nie może być zapisywany przez nikogo innego niż użytkownik. Podobnie, uprawnienia muszą być również ograniczone do klucza prywatnego: Odczyt / zapis tylko dla użytkownika, a katalog .ssh i prywatny plik kluczy muszą być własnością użytkownika.

Technicznie możesz przechowywać klucz w dowolnym miejscu. Dzięki ssh -i path/to/privatekeymożesz określić tę lokalizację podczas łączenia. Ponownie, właściwa własność i uprawnienia są krytyczne, a ssh nie będzie działać, jeśli nie masz odpowiednich praw.


4
+1 za wyrażenie, że jest to klucz prywatny (!)
mailq

51
Zakładasz, że użytkownik jest prawdziwą osobą. Jeśli login jest nieinteraktywnym użytkownikiem wykorzystywanym do wykonywania zadań użyteczności publicznej (np. Do uruchamiania skryptów maine na zdalnych serwerach), to tak, prawdopodobnie wygenerowałbyś klucz dla tego użytkownika ręcznie. Oczywiście ma to swoje implikacje dla bezpieczeństwa, ale to już inna historia.
Rilindo

2
@Rilindo ssh -ina klucz prywatny dla procesu nieuprzywilejowanego to sposób, w jaki obsługuję więcej niż kilka zautomatyzowanych procesów tworzenia kopii zapasowych rsync. :)
Shadur

9
Nie podoba mi się taka odpowiedź, która mówi „nie powinieneś tego robić”, ale nie odpowiadaj na pytanie. Chociaż może to być poprawne i pomocne w kontekście pierwotnego pytania, inne osoby mogą mieć to samo pytanie w innej sytuacji. „klucze ssh nigdy nie powinny być generowane dla innego użytkownika”: Tak jest w prostym przypadku. Ale na przykład weź pod uwagę wiele tożsamości tej samej osoby fizycznej. Może istnieć wiele kont w wielu systemach, przy czym nie wszystkie umożliwiają generowanie kluczy lub odpowiednie zabezpieczenie kluczy prywatnych.
Gustave

userslubuser's
Użytkownik

135

W kluczach SSH nie ma informacji o użytkowniku .

Ostatnie pole w kluczu publicznym to komentarz (i można je zmienić, uruchamiając następujące polecenie ssh-keygen -C newcomment).

Nie trzeba robić nic specjalnego, aby utworzyć klucz dla innego użytkownika, wystarczy umieścić go we właściwej lokalizacji i ustawić uprawnienia.


5
To poprawna odpowiedź.
sebnukem

1
Właśnie przetestowałem i potwierdziłem, że to nie tylko komentarz, ale można go usunąć, a klawisze nadal działają. Zawsze myślałem, że to ma znaczenie! Dziękujemy za udzielenie prawidłowej odpowiedzi. Podobnie jak powyższe komentarze, mam powód do tworzenia kluczy dla innych użytkowników, ale nie powiem dlaczego, więc nie ma argumentu.
FreeSoftwareServers

18

Zostań użytkownikiem, używając su i uruchom klucz jako ten użytkownik:

[root@kvm0001 ~]# su - joeuser
[joeuser@kvm0001 ~]$ ssh-keygen -t dsa (or rsa1 or rsa, depending on your security requirements)
Generating public/private dsa key pair.
Enter file in which to save the key (/home/joeuser/.ssh/id_dsa):

Dlaczego warto wybrać DSA?
Ram

Ups, siła nawyku. Pozwól mi zaktualizować.
Rilindo,

4
powinieneś używać rsa (lub być może jednego z wariantów krzywej eliptycznej). dsa ogranicza się do niepewnych rozmiarów kluczy. rsa1 jest starszym formatem dla ssh1, którego nikt już nie powinien używać.
Peter Green,

Mój joeuserjest użytkownikiem usługi, dlatego nie mogę się zalogować. Jak zezwolić użytkownikowi usługi (który po prostu uruchamia procesy) na posiadanie klucza ssh?
Jonathan

@JonathanLeaders Określając powłokę dla użytkownika, stajesz się tym użytkownikiem. Coś w tym stylu: `` [root @ ip-10-254-41-211 ~] # grep ftp / etc / passwd ftp: x: 14: 50: Użytkownik FTP: / var / ftp: / sbin / nologin [root @ ip-10-254-41-211 ~] # su - ftp su: ostrzeżenie: nie można zmienić katalogu na / var / ftp: brak takiego pliku lub katalogu To konto jest obecnie niedostępne. [root @ ip-10-254-41-211 ~] # su -s / bin / bash ftp bash-4.2 $ whoami ftp bash-4.2 $ ''
Rilindo

6

Jak widać tutaj , możesz użyć chmod, aby zmienić uprawnienia do odczytu folderu użytkownika, do którego chcesz dodać klucz SSH.

vim /home/username/.ssh/authorized_keys

Następnie po prostu wklej klucz do nowej linii na dole tego pliku


1
Link nie działa ...
Nyxynyx,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.