¿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.