Tengo un servidor Ubuntu en casa y uso claves SSH para iniciar sesión a través del terminal desde mi computadora portátil. En raras ocasiones, pero principalmente desde el trabajo, necesito acceder a este servidor, pero no quiero copiar claves en mi computadora portátil del trabajo; prefiero usar una contraseña simple para eso.
Entonces, si habilito el inicio de sesión con contraseña desde el archivo de configuración ssh, también me pedirá la contraseña en mi computadora portátil aunque contenga claves, ¿verdad?
¿Hay alguna manera de detener este comportamiento?
Gracias.
Respuesta1
Utilice dos claves privadas
Configure su estación de trabajo usando el mismo proceso (peronola misma clave privada) que cuando configuró su computadora portátil:
- Nunca existe una buena razón para copiar una clave privada de otra máquina. Si aún no ha generado una clave privada nueva en su estación de trabajo, hágalo ahora. Generar también la clave pública correspondiente. En una terminal de su estación de trabajo,
tipo:ssh-keygen -t rsa
- Copie la clave pública de su estación de trabajo al servidor. En una terminal de su estación de trabajo,
tipo:ssh-copy-id [email protected]
(pero use su nombre de usuario y nombre de host reales, y luego escriba su contraseña cuando se la solicite).
Esto instala la clave pública de su estación de trabajo en el ~/.ssh/authorized_keys
archivo de ese usuario en el servidor.
- No existe el paso 3. De ahora en adelante, puede iniciar sesión en el servidor desde su estación de trabajo y nunca copió la clave privada secreta de su computadora portátil desde su computadora portátil.
detalles
Supongo que lo que realmente estás preguntando es
- Tengo un servidor Ubuntu ("casa")
- Inicio sesión en mi servidor Ubuntu desde mi computadora portátil personal ("laptop")
- También inicio sesión en mi servidor Ubuntu desde la computadora de mi trabajo ("estación de trabajo").
¿Cuál es la forma correcta de hacer eso?
- Supongo que podría simplemente iniciar sesión con la misma contraseña desde ambos lugares. Ésa no puede ser la forma correcta, porque todo el mundo dice que la autenticación con clave pública es mucho mejor que las contraseñas.(a)
- Supongo que podría simplemente copiar la clave privada de mi computadora portátil a mi estación de trabajo. Esa no puede ser la manera correcta, porque todo el mundo dice que se supone que la clave privada nunca debe salir de la máquina cliente.
A la gente se le mete en la cabeza que una cuenta en un servidor tiene un único nombre de usuario y, por supuesto, una única contraseña autorizada.
Los sistemas de clave pública como ssh son mejores que el sistema de contraseñas: una cuenta en un servidor tiene un único nombre de usuario ycualquier número de claves públicas autorizadas, todos ellos listados en el ~/.ssh/authorized_keys
archivo.
(más detalles).
Respuesta2
Es posible forzar a su computadora portátil a usar el archivo de claves incluso si tanto el enfoque basado en contraseña como en clave están disponibles. Si actualmente te estás conectando con , edita y agrega:ssh [email protected] -p 22
~/.ssh/config
Host your.host.tld
PreferredAuthentications publickey
Este archivo de configuración se puede utilizar para que escribas aún menos:
Host home
Hostname your.host.tld
User user
PreferredAuthentications publickey
Port 22
Con esa configuración, sólo necesitas ssh home
.
Es posible restringir los inicios de sesión basados en contraseña a una determinada dirección IP. En /etc/ssh/sshd_config
, tendría una línea que deshabilitaba la autenticación basada en contraseña: PasswordAuthentication no
. Para habilitarlo para inicios de sesión desde una determinada IP, puede usar:
Match Address 12.34.56.78
PasswordAuthentication yes
Le sugiero que utilice la autenticación basada en claves incluso si está en el trabajo. Es mucho más segura que la autenticación basada en contraseña, ya que no se puede aplicar fuerza bruta tan fácilmente. Puedes tener varias claves para la misma cuenta, eso no debería ser un problema.
Para obtener directivas de configuración más sofisticadas, consulte la página del manual dessh_config(5). (para el lado del servidor, consultesshd_config(5))
Respuesta3
No, al menos con la configuración que tengo, si habilita la autenticación de contraseña, solo le solicitará la contraseña si no tiene una clave.
Dicho esto, nunca habilitaría la autenticación de contraseña en un servidor expuesto a Internet.