Esto es lo que he intentado y recibí un error:
$ cat /home/tim/.ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
Password:
cat: >>: No such file or directory
cat: .ssh/authorized_keys: No such file or directory
Esto es lo que he intentado y recibí un error:
$ cat /home/tim/.ssh/id_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'
Password:
cat: >>: No such file or directory
cat: .ssh/authorized_keys: No such file or directory
Respuestas:
OpenSSH viene con un comando para hacer esto
ssh-copy-id
,. Simplemente le da la dirección remota y agrega su clave pública alauthorized_keys
archivo en la máquina remota:Es posible que necesite usar la
-i
bandera para ubicar su clave pública en su máquina local:fuente
>>
es manejado por su shell, y está ejecutando el comando a través de SSH en lugar de hacerlo a través de un shell. Su solución de hacer que SSH ejecute un shell, que luego ejecuta su comando, debería funcionarssh-copy-id
no funcionará, ¿verdad?Siempre puedes hacer algo como esto:
No estoy seguro si puede
cat
desde una máquina local a una sesión ssh. Simplemente muévalo a / tmp como se sugiere.Editar: Esto es exactamente lo que
ssh-copy-id
hace. Justo como dijo Michael.fuente
cat
o de otra manera). Lo que estás describiendo es la forma anticuada;ssh-copy-id
se recomienda porque hay menos riesgo de errores tipográficos o de otorgar permisos incorrectos a los archivos.cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> ~/.ssh/authorized_keys'
.Esta respuesta describe cómo hacer que funcione la forma prevista que se muestra en la pregunta.
Puede ejecutar un shell en la computadora remota para interpretar el significado especial del
>>
operador de redirección:El operador de redirección
>>
normalmente es interpretado por un shell.Cuando ejecuta
ssh host 'command >> file'
, no se garantiza quecommand >> file
sea interpretado por un shell. En su caso,command >> file
se ejecuta en lugar del shell sin una interpretación especial y>>
se le dio al comando como argumento, de la misma manera que se ejecutacommand '>>' file
en un shell.Algunas versiones de SSH (OpenSSH_5.9) invocarán automáticamente el shell en el servidor remoto y le pasarán los comandos cuando detecten tokens para ser interpretados por un shell como
;
>
>>
etc.fuente
openssh
no proporcionarssh-copy-id
. La secuencia sería:Genera una clave decente de 4k
Inicie su agente ssh y absorba información como
SSH_AGENT_PID
, etc.Ahora comience a cargar claves en su agente SSH
Comprueba que está cargado
Esto le mostrará lo que tiene en el agente ssh
Ahora realmente SSH a un sistema remoto
Ahora puede ejecutar ssh-copy-id sin argumentos:
Esto crea
~/.ssh/authorized_keys
y completa la información básica requerida de ssh-agent.fuente
Tuve problemas con ssh-copy-id al elegir otro puerto que no sea 22 ... así que aquí está mi línea con un puerto ssh diferente (por ejemplo, 7572):
fuente
De hecho, el
the ssh-copy-id
comando hace exactamente esto (desde elopenssh-client
paquete):Nota:
host
significa dirección IP o dominio .Me gustaría también agregar información adicional a esto
1) Podemos especificar un puerto diferente para SSH en el servidor de destino:
Nota:
El puerto debe estar frente al
user@host
o no se resolverá.Fuente
2) Podemos especificar un archivo con una clave pública :
Nota:
La
-i
opción nos permite indicar la ubicación apropiada del nombre con el archivo que contiene la clave pública.A veces puede ser útil, especialmente si lo almacenamos en una ubicación no estándar o si tenemos más de una clave pública en nuestra computadora y queremos señalar una específica.
fuente