Oto, co próbowałem i mam błąd:
$ cat /home/tim/.ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
Password:
cat: >>: No such file or directory
cat: .ssh/authorized_keys: No such file or directory
Oto, co próbowałem i mam błąd:
$ cat /home/tim/.ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
Password:
cat: >>: No such file or directory
cat: .ssh/authorized_keys: No such file or directory
Odpowiedzi:
OpenSSH pochodzi z poleceniem, aby to zrobić,
ssh-copy-id
. Po prostu nadajesz mu adres zdalny, a on dodaje klucz publiczny doauthorized_keys
pliku na zdalnym komputerze:Może być konieczne użycie
-i
flagi do zlokalizowania klucza publicznego na komputerze lokalnym:źródło
>>
jest obsługiwany przez twoją powłokę, a komendę uruchamiasz przez SSH zamiast przez powłokę. Jego poprawka polegająca na tym, że SSH uruchamia powłokę, która następnie uruchamia twoje polecenie, powinna działaćssh-copy-id
nie będzie działać, prawda?Zawsze możesz zrobić coś takiego:
Nie jestem pewien, czy możesz
cat
z lokalnego komputera na sesję ssh. Po prostu przenieś go do / tmp zgodnie z sugestią.Edycja: Właśnie to
ssh-copy-id
robi. Tak jak powiedział Michael.źródło
cat
lub w inny sposób). To, co opisujesz, to staromodny sposób;ssh-copy-id
jest zalecane, ponieważ istnieje mniejsze ryzyko literówek lub niewłaściwych uprawnień dla plików.cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> ~/.ssh/authorized_keys'
.Ta odpowiedź opisuje, jak sprawić, by zamierzony sposób pokazany w pytaniu działał.
Możesz uruchomić powłokę na komputerze zdalnym, aby zinterpretować specjalne znaczenie
>>
operatora przekierowania:Operator przekierowania
>>
jest zwykle interpretowany przez powłokę.Podczas wykonywania
ssh host 'command >> file'
nie ma gwarancji, żecommand >> file
zostanie zinterpretowana przez powłokę. W twoim przypadkucommand >> file
jest wykonywany zamiast powłoki bez specjalnej interpretacji i>>
przekazany do polecenia jako argument - w ten sam sposób, jakcommand '>>' file
w powłoce.Niektóre wersje SSH (OpenSSH_5.9) automatycznie wywołują powłokę na zdalnym serwerze i przekazują do niej polecenia (polecenia), gdy wykryją tokeny do interpretacji przez powłokę, taką jak
;
>
>>
itp.źródło
openssh
zapewniassh-copy-id
. Sekwencja będzie następująca:Wygeneruj porządny klucz 4k
Uruchom agenta ssh i zasysaj informacje takie jak
SSH_AGENT_PID
itp.Teraz zacznij ładować klucze do swojego agenta SSH
Sprawdź, czy jest załadowany
To pokaże ci, co masz w agencie ssh
Teraz faktycznie SSH do zdalnego systemu
Teraz możesz uruchomić ssh-copy-id bez argumentów:
Spowoduje to
~/.ssh/authorized_keys
utworzenie i uzupełnienie podstawowych informacji wymaganych od ssh-agent.źródło
Miałem problemy z ssh-copy-id przy wyborze innego portu niż 22 ... więc oto mój oneliner z innym portem ssh (np. 7572):
źródło
Rzeczywiście
the ssh-copy-id
komenda robi dokładnie to (zopenssh-client
pakietu):Uwaga:
host
oznacza adres IP lub domenę .Chciałbym również dodać do tego kilka dodatkowych informacji
1) Możemy określić inny port SSH na serwerze docelowym:
Uwaga: portu musi być z przodu lub go nie rozwiąże.
user@host
Źródło
2) Możemy określić plik z kluczem publicznym :
Uwaga:
Ta
-i
opcja pozwala nam wskazać odpowiednią lokalizację nazwy w pliku zawierającym klucz publiczny.Czasami może się przydać, zwłaszcza jeśli przechowujemy go w niestandardowej lokalizacji lub gdy mamy więcej niż jeden klucz publiczny na naszym komputerze i chcemy wskazać konkretny.
źródło