È possibile eseguire ssh-copy-id su una porta diversa da 22?


99

Ho un server con SSH in esecuzione su una porta non standard. Invece di 22, gira su 8129. Per accedere, uso:

ssh -p 8129 hostname

Ora, ogni volta che ho bisogno di impostare una chiave per l'accesso senza password, devo copiare la chiave pubblica e aggiungerla manualmente authorized_keys. Ho scoperto che il comando ssh-copy-idpotrebbe essere utilizzato per semplificare questo processo, ma sembra che non abbia un'opzione per specificare la porta del server SSH.

C'è un modo per dire ssh-copy-iddi usare la porta 8129 o dovrei semplicemente dimenticare questo comando e copiare / incollare manualmente come prima?

Risposte:


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

Fonte: http://it-ride.blogspot.com/2009/11/use-ssh-copy-id-on-different-port.html

NOTA: la porta deve trovarsi davanti all'utente @ host o non si risolverà


11
E 'veramente stupido, che sshha la sintassi ssh -p 1234 user@host, ssh-copy-id "-p 1234 user@host"e alla fine scp -P 1234 user@host. Sarebbe così bello avere la stessa sintassi.
Tombart,

2
@Tombart e poi rsync ha rsync -e "ssh -p 1234" user@host. Giuro che è più seccante di quanto valga la pena usare una porta personalizzata.
Garetmckinley,

1
La risposta di @Colt McCormack spiega che questo è stato migliorato nelle nuove versioni e questa sintassi peculiare non è più necessaria.
meshy

1
Cordiali saluti, il comando completo richiede che l'IP sia stato digitato due volte e dovrebbe essere simile a:ssh-copy-id "root@192.168.0.100 -p 12345" -i ~/.ssh/id_rsa.pub 192.168.0.100
degenerato il

1
Su macOS (I am on High Sierra) le citazioni non sono richieste. vale a dire. ssh-copy-id -p 8129 user@hostlavori.
Arjun Mehta,

46

ssh-copy-idnon accetta argomenti che potrebbero essere passati al sshcomando sottostante , ma è possibile configurare un alias ~/.ssh/config.

Host myhost
HostName hostname
Port 8129

Quindi corri ssh-copy-id myhost.


3
Ciò ha anche il vantaggio di rimuovere la necessità della -pbandiera nei sshtentativi regolari . Non è quindi solo la risposta giusta a questa domanda, è The Right Thing, punto.
Warren Young,

Grazie per questo. La seconda riga "Nome host nome host" non è necessaria se si è soddisfatti del nome host naturale dell'host.
Lonniebiz,


11

Un rapido sguardo alla fonte indica che ssh-copy-idsembra non avere alcuna funzione che lo consenta. Tuttavia, potresti fare qualcosa del tipo invece:

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

6

Funziona (da qui ):

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

5

L'ho sempre usato scpper copiarlo:

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

Anche se devo dire, probabilmente userò gli altri metodi (una linea / connessione) se li ricordo in futuro. Ma questa è un'altra opzione per te.


2

Su CentOS7 è solo:

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

Si prega di fare attenzione a non inserire user @ host tra le virgolette o si otterrà il seguente errore in questa distribuzione:

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

0

Con il mio macOS, ha funzionato.

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

0

Io uso questo comando:

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

Esempio:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.