
Entiendo cómo puedo poner mi clave ssh pública en las claves autorizadas de otra máquina ssh-copy-id
siempre que tenga el nombre de usuario/contraseña de la máquina remota.
¿Cómo es posible lo contrario? Obtener la clave pública de alguna máquina remota (no se requerirá contraseña porque es pública) y colocarla en mis propias claves autorizadas (nuevamente, no se requiere contraseña ya que es mía).
Respuesta1
ssh ${remote_host} cat .ssh/id_rsa.pub | tee -a $HOME/.ssh/authorized_keys
Respuesta2
Estás combinando dos tipos diferentes de claves SSH allí. Aunque son similares en estructura, tienen un propósito muy diferente.
Su clave pública es lo que podría llamarse unaclave de usuario: aunque espúblico, es decir, no hay necesidad de mantenerlo en secreto, no espublicadoautomáticamente por cualquier medio. Si quieres ponerlo en tu página web, claro, puedes hacerlo. Pero debes hacerlo por tu cuenta.
Las claves por máquina, por otro lado, se llamanclaves de host. Estos se intercambian automáticamente al iniciar sesión, por lo que pueden considerarsepublicado. Pero las claves de host no van a un authorized_keys
archivo: van a known_hosts
su lugar. El simple hecho de tener la clave de host de alguna máquina no le dará a nadie ningún tipo de acceso: simplemente le permite a su cliente SSH confirmar que la máquina es la misma que antes cuando se conecta a ella.
Si el administrador del sistema elige habilitar HostbasedAuthentication
en /etc/ssh/sshd_config
y la clave del host remoto está en un /etc/ssh/ssh_known_hosts
archivo de todo el sistema, entonces sería posible agregar el nombre del host remoto /etc/hosts.equiv
o /etc/ssh/shosts.equiv
permitirlo.todosen ese host remoto para iniciar sesión en las cuentas correspondientes en el host local, sin ingresar una contraseña. Si el administrador del sistema también establece IgnoreRhosts
en no
, entonces usted, como usuario normal, podría permitir de manera similar que un usuario específico en un host remoto específico acceda a su cuenta en el host local sin una contraseña, colocando la clave de host del host remoto en su ~/.ssh/known_hosts
y en el nombredeusuario@nombredehost en su ~/.rhosts
o ~/.shosts
. Pero este método de autenticación está deshabilitado de forma predeterminada.
(¿Por qué dos archivos como ~/.shosts
y ~/.rhosts
, crees? Bueno, es porque el archivo fue utilizado por las antiguas herramientas /// no .rhosts
cifradas , y SSH se diseñó originalmente como un reemplazo directo para él. Usarías o si deseaba permitir el acceso a través de las herramientas y , o si deseaba permitir solo el acceso SSH).rsh
rlogin
rexec
rcp
.rhosts
hosts.equiv
rsh
ssh
.shosts
shosts.equiv
Respuesta3
Al usar ssh-keyscan o automáticamente cuando se conecta a un host desconocido, agregará la clave aknown_hosts por usted. Si desea hacerlo manualmente, puede utilizar el siguiente comando:
ssh-keyscan hostname >> ~/.ssh/known_hosts