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.