¿ ssh-copy-id -i blah.pub user@host
Inicia sesión con la forma de clave pública de la clave privada especificada por -i o inicia sesión con ~/.ssh/id_rsa
?
Si la respuesta es que inicia sesión con ~/.ssh/id_rsa, / la clave que SSH usa de forma predeterminada, y no con la forma de clave privada de la clave pública especificada con -i, ¿por qué da un error aquí?
Tengo un par de claves públicas y privadas, rodney y rodney.pub. Si cambio el nombre del archivo rodney a roddney y luego hago ssh-copy-id -i ./rodney.pub user@ip, espero que inicie sesión y agreguelo, aunque aparece el error "ERROR: no se pudo abrir el archivo de identificación './rodney': no existe tal archivo". Si cambio el nombre de roddney a rodney, no aparece ese error. ¿Por qué ssh-copy-id necesitaría o se preocuparía por la clave privada rodney, si todo lo que hace es ssh (que de forma predeterminada usa id_rsa para iniciar sesión) y luego copiar rodney.pub?
Respuesta1
¿Ssh-copy-id -i blah.pub usuario@host, inicia sesión con la forma de clave privada de la clave pública especificada con -i, o inicia sesión con ~/.ssh/id_rsa?
No iniciará sesión con la clave privada de la clave pública especificada con -i.
Inicia sesión con la clave que ssh usa de forma predeterminada. ~/.ssh/id_rsa, (aunque quizás si ssh-agent se está ejecutando, entonces ssh podría probar con otras claves, pero de cualquier manera... no iniciará sesión con la forma de clave privada de la clave pública especificada con -i). Supongamos que no tiene ssh-agent ejecutándose, lo cual creo que también es la suposición en la pregunta.
Si la respuesta es que inicia sesión con ~/.ssh/id_rsa, / la clave que SSH usa de forma predeterminada, y no con la forma de clave privada de la clave pública especificada con -i, ¿por qué da un error aquí?
Tengo un par de claves públicas y privadas, rodney y rodney.pub. Si cambio el nombre del archivo rodney a roddney y luego hago ssh-copy-id -i ./rodney.pub user@ip, espero que inicie sesión y agreguelo, aunque aparece el error "ERROR: no se pudo abrir el archivo de identificación './rodney': no existe tal archivo". Si cambio el nombre de roddney a rodney, no aparece ese error. ¿Por qué ssh-copy-id necesitaría o se preocuparía por la clave privada rodney, si todo lo que hace es ssh (que de forma predeterminada usa id_rsa para iniciar sesión) y luego copiar rodney.pub?
Hablé con un experto en ssh hace un tiempo sobre esto.
Mi caso de uso era que tenía una computadora portátil y algunos VPS, quería un VPS para SSH/SFTP para todos los demás. Mi computadora portátil ya tenía acceso SSH a todos los VPS.
Lo que podría haber hecho fue generar el par de claves en la computadora portátil y luego ssh-copy-id la clave pública para todos los VPS. Luego mueva o copie la clave privada que generé desde la computadora portátil al primer VPS.
Pero lo que hice (lo que provocó un error que me desconcertó y me hizo preguntar), generé el par de claves en mi computadora portátil, copié la clave privada que había generado, desde la computadora portátil, al primer VPS. Luego eliminé esa clave privada de mi computadora portátil porque pensé (incorrectamente) que ya no la necesito en la computadora portátil. Como (en realidad pensé correctamente) ssh-copy-id no lo usará para iniciar sesión en ninguno de mis VPS. Así lo hice ssh-copy-id -i blah.pub user@IPofFirstVPS
y me salió un error.
ssh-copy-id necesita el par de claves, por lo tanto, tanto la clave privada como la pública.
Entonces, si lo hace ssh-copy-id -i blah.pub user@host
, espera la forma de clave privada de ese archivo de clave pública especificado.
Si tuviera que hacerlo ssh-copy-id blah
, escribe .pub en el nombre del archivo y lo hace ssh-copy-id blah.pub
. Por lo tanto, también puede colocar el .pub al final, es decir, especificar el nombre del archivo de clave pública en lugar del nombre de archivo de clave privada.
Pero necesitar la clave privada es sólo una "verificación de seguridad". En el sentido de que es solo una prueba que hace antes de lo suyo, agregando la clave pública al archivo remoto autorizado_keys. En teoría, ni siquiera tiene que hacer esa verificación para iniciar sesión y agregar.
Es anticipar/adivinar, y tal vez adivinar erróneamente, que en el futuro podría realizar SSH desde esa máquina desde la que realizó ssh-copy-id al host remoto, utilizando la forma de clave privada de esa identificación pública que especificó y que, por lo tanto, ¡Necesitaría esa clave privada en la máquina desde la que está ejecutando ssh-copy-id! (No cree que, oh, tal vez hayas generado el par de claves con la intención de usar esa clave privada en otras máquinas, sino que simplemente estés usando ssh-copy-id de la máquina en la que estás, porque esa máquina tiene acceso ssh a muchos sus otras máquinas).
ssh-copy-id no inicia sesión con la clave privada del par de claves públicas.
ssh-copy-id tiene una opción -o, donde puede especificar una clave privada para iniciar sesión.
No tengo ssh-agent configurado, por lo que mi ssh se conecta con la clave privada ~/.ssh/id_rsa y esa es la clave privada con la que ssh-copy-id iniciará sesión. Cualquier clave pública que se especifique en -i. ¡Pero aún así verificará si el nombre de archivo de la clave privada de la clave pública especificada en -i existe!
ssh-copy-id es un script, por ejemplo, incluso comienza con, #!/bin/sh
por lo que alguien familiarizado con los scripts podría incluso cat/vim y comprobarlo y verlo.