Czy można uruchomić ssh-copy-id na porcie innym niż 22?


99

Mam serwer z SSH działający na niestandardowym porcie. Zamiast 22 działa na 8129. Aby się zalogować, używam:

ssh -p 8129 hostname

Teraz, ilekroć muszę skonfigurować klucz do logowania bez hasła, muszę skopiować klucz publiczny i ręcznie dodać go do uprawnionych kluczy. Odkryłem, że polecenie ssh-copy-idmoże być użyte w celu uproszczenia tego procesu, ale wygląda na to, że nie ma opcji określania portu serwera ssh.

Czy jest jakiś sposób na ssh-copy-idużycie portu 8129, czy powinienem po prostu zapomnieć o tym poleceniu i ręcznie skopiować / wkleić?

Odpowiedzi:


112
$ ssh-copy-id "-p 8129 user@host"

Źródło: http://it-ride.blogspot.com/2009/11/use-ssh-copy-id-on-different-port.html

UWAGA: Port musi znajdować się przed użytkownikiem @ host, inaczej nie zostanie rozpoznany


11
To naprawdę głupie, że sshma składnię ssh -p 1234 user@host, ssh-copy-id "-p 1234 user@host"a na końcu scp -P 1234 user@host. Byłoby miło mieć taką samą składnię.
Tombart

2
@Tombart, a następnie rsync ma rsync -e "ssh -p 1234" user@host. Przysięgam, że jest to bardziej kłopotliwe niż warto używać niestandardowego portu.
garetmckinley,

1
Odpowiedź @Colt McCormack wyjaśnia, że ​​poprawiono to w nowych wersjach i ta osobliwa składnia nie jest już wymagana.
meshy

1
FYI pełne polecenie wymaga wpisania adresu IP dwa razy i powinno wyglądać ssh-copy-id "root@192.168.0.100 -p 12345" -i ~/.ssh/id_rsa.pub 192.168.0.100
degeneracja

1
Na macOS (jestem na High Sierra) cytaty nie są wymagane. to znaczy. ssh-copy-id -p 8129 user@hostPracuje.
Arjun Mehta

46

ssh-copy-idnie przyjmuje żadnych argumentów, które mógłby przekazać do bazowej sshkomendy, ale można skonfigurować alias w ~/.ssh/config.

Host myhost
HostName hostname
Port 8129

Potem biegnij ssh-copy-id myhost.


3
Ma to również tę zaletę, że usuwa potrzebę -pflagi przy regularnych sshpróbach. Jest to zatem nie tylko właściwa odpowiedź na to pytanie, ale właściwa rzecz, kropka.
Warren Young,

Dzięki za to. Druga linia „Nazwa hosta” nie jest konieczna, jeśli jesteś zadowolony z naturalnej nazwy hosta.
Lonniebiz


11

Szybkie spojrzenie na źródło wskazuje, że ssh-copy-idwydaje się, że nie ma na to żadnej funkcji. Możesz jednak zamiast tego zrobić coś takiego:

ssh -p8129 user@host 'cat >> ~/.ssh/authorized_keys' < ~/.ssh/id_*.pub

6

To działa ( stąd ):

ssh-copy-id -i ~/.ssh/id_rsa.pub '-p 221 username@host'

5

Zawsze scpgo kopiowałem:

scp -P 8129 ~/.ssh/id_*.pub user@host:
ssh -p 8129 user@host 'cat id_*.pub >> ~/.ssh/authorized_keys'

Chociaż muszę powiedzieć, prawdopodobnie użyję innych metod (linia / połączenie), jeśli je zapamiętam w przyszłości. Ale to kolejna opcja dla Ciebie.


2

Na CentOS7 jest po prostu:

 ssh-copy-id "-p 1234" user@host

Uważaj, aby nie umieszczać user @ host w cudzysłowie, w przeciwnym razie pojawi się następujący błąd:

/usr/bin/ssh-copy-id: ERROR: Bad port ' 1234 user@host'

0

W moim systemie macOS to zadziałało.

ssh-copy-id -i ~/.ssh/id_rsa.pub -p <port> user@host

0

Używam tego polecenia:

ssh-copy-id ssh://user@ip_addr:port

Przykład:

ssh-copy-id ssh://root@1.2.3.4:23

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.