Soy flojo en casa y uso la autenticación de contraseña para mis máquinas domésticas. Estoy listo para pasar a la autenticación basada en claves. Hay muchas opciones en la web sobre cómo hacer esto, incluyendo atrapar y luego pasar la llave, pasar la llave directamente, etc.
Estoy buscando la forma más fácil y recomendada de copiar una clave, ¿espero que haya un contenedor conveniente en algún lugar del paquete ssh de Ubuntu?
Ya estoy al tanto de cómo cerrar los inicios de sesión de contraseña .
Respuestas:
El
ssh-copy-id
comando (en el paquete openssh-client e instalado por defecto) hace exactamente esto:copia la clave pública de su identidad predeterminada (uso
-i identity_file
para otras identidades) en el host remoto.La identidad predeterminada es su clave ssh "estándar". Se compone de dos archivos (clave pública y privada) en su
~/.ssh
directorio, normalmente nombradoidentity
,id_rsa
,id_dsa
,id_ecdsa
oid_ed25519
(y lo mismo con.pub
), dependiendo del tipo de llave. Si no creó más de una clave ssh, no tiene que preocuparse por especificar la identidad, ssh-copy-id simplemente la seleccionará automáticamente.En caso de que no tenga una identidad, puede generar una con la herramienta
ssh-keygen
.Además, si el servidor usa un puerto diferente del predeterminado (
22
), debe usar comillas de esta manera ( fuente ):fuente
ssh-copy-id "user@host -p 6842"
brew install ssh-copy-id
y luego ejecutar el comando.Me gusta la respuesta de Marcel. No conocía este comando. Siempre he estado usando lo que había encontrado en el sitio web de Oracle :
Pensé publicarlo aquí todavía, porque es una buena ilustración de lo que se puede lograr en el código de shell con el poder de
ssh
. ¡Pero usar elssh-copy-id
es definitivamente una forma más segura de hacerlo correctamente!Tenga en cuenta que si la carpeta
.ssh
aún no existe, el comando anterior fallará. Además, podría ser mejor al crear el archivo establecer un permiso mínimo posible (básicamente lectura-escritura solo para el propietario). Aquí hay un comando más avanzado:fuente
.ssh
no exista en el lado remoto.cat
es necesario: una redirección de entrada normal es suficiente, por ejemplo< ~/.ssh/id_rsa.pub | ssh ...
Método gráfico
fuente
seahorse
.En Ubuntu puedes obtener tus claves desde Launchpad:
Detalles :
Pegue el contenido de su archivo de clave pública en ese campo (incluido el comentario). Tal clave se ve así:
Aquí,
ssh-rsa
indica que la clave es una clave RSA,AAAAB3Nza .... UyDOFDqJp
es la clave real ylekensteyn
es el comentario.El paquete
ssh-import-id
debe instalarse en la máquina a la que se debe acceder desde el control remoto. Este paquete se instala junto con elopenssh-server
paquete ya que es un paquete recomendado paraopenssh-server
. Después de asegurarse de quessh-import-id
se haya instalado en la máquina cliente, ejecute:Esto descargará la clave pública de los servidores de Launchpad a través de HTTPS que lo protege de los ataques MITM.
En Ubuntu Lucid y antes, puede lograr lo mismo con:
El
echo
comando es necesario para obtener una nueva línea adicional después de la línea con la tecla SSH.fuente
para puerto personalizado
-i cambia por defecto a ~ / .ssh / id_rsa.pub, si desea otra clave, coloque la ruta de la clave después de -i
ADVERTENCIA: Si no escribió el -i, copiará todas las claves encontradas en ~ / .ssh
fuente
ssh-copy-id
hace exactamente eso No estoy seguro de por qué algunas de las otras respuestas aquí agregan información inexacta. La ayuda muestra lo siguiente:Acabo de intentar lo siguiente en el cliente Ubuntu 18.04 con un servidor CentOS 7.6 y funcionó de maravilla. El ejemplo muestra el uso de un puerto personalizado de
2222
, y la especificación de una clave pública en~/.ssh/path-to-rsa.pub
Antes de ejecutar el comando, en realidad utilicé el
-n
interruptor al final para hacer una ejecución en seco que confirmó que el comando funcionará según lo previsto. Una vez que lo confirme, ejecuté el comando nuevamente como se indicó anteriormente, sin el-n
interruptor.fuente