Zainstaluj klucz publiczny przez ssh-copy-id dla innych użytkowników

26

ssh-copy-idmożna użyć do zainstalowania klucza publicznego na komputerze zdalnym authorized_keys. Czy to samo polecenie może być użyte do zainstalowania kluczy publicznych innych użytkowników, jeśli masz taką sudomożliwość?

Aktualizacja: zarówno lokalny, jak i zdalny używają Ubuntu 12.04.

Aktualizacja 2: opis procedury tworzenia nowego konta użytkownika i dodawania klucza publicznego

  1. (zdalnie) Utwórz nowe konto użytkownika i ustaw je na dostęp tylko do klucza publicznego użytkownika.
  2. (lokalny) Wygeneruj klucz publiczny dla nowego konta użytkownika (ssh-keygen).
  3. Zwykle robię to, aby utworzyć katalog i plik .ssh/authorized_keysna zdalnym serwerze, a następnie skopiować i wkleić wygenerowany lokalnie klucz publiczny na konto nowego użytkownika. To, czego szukam, to to, czy mogę użyć ssh-copy-iddo zainstalowania klucza publicznego tego nowo utworzonego użytkownika bezpośrednio w katalogu ssh. Aby zapisać jeszcze kilka poleceń.
prawdziwość
źródło

Odpowiedzi:

12

Nie to samo polecenie, ale jeśli masz sudo na zdalnym hoście, możesz użyć ssh, aby zdalnie wykonać wymagane kroki. Używam następującego polecenia, aby przekazać mój klucz ssh użytkownikowi rootowi maliny:

cat ~/.ssh/id_rsa.pub | \
  ssh [email protected] \
  "sudo mkdir /root/.ssh; sudo tee -a /root/.ssh/authorized_keys"
  • koty mój klucz bubliczny
  • potokuje to do ssh
  • ssh łączy się z moją maliną jako użytkownik ssh
  • na zdalnym używa sudo do tworzenia /root/.ssh
  • następnie używa sudo z „tee -a”, aby dołączyć standardowe wejście (które przechowuje klucz od pierwszego kota) do /root/.ssh/authorized_keys

Po prostu zbierz to wszystko jako skrypt, może dodaj trochę chmod / chown po drugiej stronie i masz to, czego potrzebujesz.

Michael Wyraz
źródło
Piękny i dziękuję za podział poleceń.
Blake Frederick
1

Tak :), jeśli na przykład jesteś zalogowany jako ghost @ ubuntu i ty

ssh-copy-id root@host-ip

Następnie zobaczysz na serwerze hosta /root/.ssh/authorized_keysklucz pliku zakończony ghost@ubuntu.
Oznacza to, że użytkownik-duch skopiował swoją parę kluczy i nie musi już wpisywać hasła.
Nie jestem pewien, czy będzie -u <username>teraz działać z flagą, ale zawsze możesz zalogować się jako inny użytkownik

su <user_name> 

a następnie ssh-copy-id ...

mirkobrankovic
źródło
1
Czy /root/.ssh/authorized_keyszamiast tego zostanie zainstalowany klucz /home/ghost/.ssh/authorized_keys? Właśnie zaktualizowałem aktualnie wykonywaną procedurę, aby zainstalować klucz publiczny dla nowego użytkownika. Po prostu szukam lepszej metody. Dzięki!
realguess
Klucz zostanie zainstalowany w domu użytkownika, z którym łączysz się zdalnie. Możesz użyć opcji -i ssh-copy-id, aby określić, który klucz chcesz skopiować, ale nie możesz skopiować go do innego katalogu z normalnym ssh-copy-id.
user2313067
możesz określić, który użytkownik skopiuje klucz, jeśli chcesz zalogować się jako root niż ssh-copy-id root @ host-ip, jeśli chcesz jako ghost niż ssh-copy-id ghost @ host-ip
mirkobrankovic
1
System został skonfigurowany tak, aby zezwalał na logowanie tylko za pomocą klucza publicznego. Ponieważ użytkownik ghostzostał nowo utworzony, nie ma dla niego klucza publicznego. Dlatego najpierw musisz zainstalować klucz publiczny dla użytkownika, a następnie ssh-copy-id ghost@host-ipzadziała. Ale dzięki, myślę, że kilka dodatkowych poleceń na zdalnym serwerze nie będzie wielkim problemem.
realguess
tak, najpierw trzeba wygenerować pub. klucz lokalnie, a następnie ssh-copi-id do zdalnego serwera
mirkobrankovic