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ć?

Milan Babuškov
źródło

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

Jsan
źródło
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 "[email protected] -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.

Gilles
źródło
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
17

Począwszy od openssh-client_6.2 jest teraz dedykowana flaga portu dla polecenia pozwalającego na tę składnię:

ssh-copy-id -p 8129 user@example

Dodano także obsługę dodawania innych opcji ssh z flagą -o.

Oto strona podręcznika użytkownika Ubuntu dla odpowiedniej wersji, wprowadzona w 13.04: http://manpages.ubuntu.com/manpages/saucy/man1/ssh-copy-id.1.html

Colt McCormack
źródło
3
To jedyna metoda, która zadziałała dla.
Luca Steeb,
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
Chris Down
źródło
6

To działa ( stąd ):

ssh-copy-id -i ~/.ssh/id_rsa.pub '-p 221 username@host'
DJR
źródło
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.

Kevin
źródło
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'
Max Cuttins
źródło
0

W moim systemie macOS to zadziałało.

ssh-copy-id -i ~/.ssh/id_rsa.pub -p <port> user@host
Jin Kwon
źródło