¿Es posible ejecutar ssh-copy-id en un puerto que no sea el 22?


99

Tengo un servidor con SSH ejecutándose en un puerto no estándar. En lugar de 22, se ejecuta en 8129. Para iniciar sesión, uso:

ssh -p 8129 hostname

Ahora, cada vez que necesito configurar una clave para iniciar sesión sin contraseña, tengo que copiar la clave pública y agregarla a autorizado_keys manualmente. Descubrí que el comando ssh-copy-idpodría usarse para simplificar este proceso, pero parece que no tiene una opción para especificar el puerto del servidor ssh.

¿Hay alguna forma de decirle ssh-copy-idque use el puerto 8129, o debería olvidarme de este comando y copiar / pegar manualmente como antes?

Respuestas:


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

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

NOTA: El puerto debe estar frente al usuario @ host o no se resolverá


11
Es realmente estúpido, sshtiene sintaxis ssh -p 1234 user@host, ssh-copy-id "-p 1234 user@host"y finalmente scp -P 1234 user@host. Sería muy bueno tener la misma sintaxis.
Tombart

2
@Tombart y luego rsync tiene rsync -e "ssh -p 1234" user@host. Juro que es más complicado de lo que vale la pena usar un puerto personalizado.
garetmckinley

1
La respuesta de @Colt McCormack explica que esto se ha mejorado en las nuevas versiones y que esta peculiar sintaxis ya no es necesaria.
Meshy

1
Para su información, el comando completo requiere que la IP se escriba dos veces, y debería verse así:ssh-copy-id "root@192.168.0.100 -p 12345" -i ~/.ssh/id_rsa.pub 192.168.0.100
degenerar el

1
En macOS (estoy en High Sierra) no se requieren las comillas. es decir. ssh-copy-id -p 8129 user@hosttrabajos.
Arjun Mehta

46

ssh-copy-idno toma ningún argumento que pueda pasar al sshcomando subyacente , pero puede configurar un alias en ~/.ssh/config.

Host myhost
HostName hostname
Port 8129

Entonces corre ssh-copy-id myhost.


3
Esto también tiene el beneficio de eliminar la necesidad de la -pbandera en los sshintentos regulares . Por lo tanto, no es solo la respuesta correcta a esta pregunta, es lo correcto, punto.
Warren Young

Gracias por esto. La segunda línea "HostName hostname" no es necesaria si está satisfecho con el nombre de host natural del host.
Lonniebiz


11

Un vistazo rápido a la fuente indica que ssh-copy-idparece no tener ninguna función que lo permita. Sin embargo, podría hacer algo como lo siguiente:

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

6

Esto funciona (desde aquí ):

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

5

Siempre lo he scpcopiado:

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

Aunque debo decir, probablemente usaré los otros métodos (una línea / conexión) si los recuerdo en el futuro. Pero esta es otra opción para ti.


2

En CentOS7 es solo:

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

Tenga cuidado de no colocar user @ host dentro de las comillas o obtendrá el siguiente error en esta distribución:

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

0

Con mi macOS, esto funcionó.

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

0

Yo uso este comando:

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

Ejemplo:

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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.