Las instrucciones en help.ubuntu.com/community/SSH/OpenSSH/Configuring recomiendan deshabilitar la autenticación de contraseña para que "solo sea posible conectarse desde computadoras que haya aprobado específicamente". Pero no dicen cómo aprobar específicamente una computadora. ¿Cómo hago eso?
Respuesta aceptada:
En cada usuario que desee tener acceso al servidor, ejecute en una terminal:
ssh-keygen
ssh-copy-id <username>@<serverIPorDNSname>
Le preguntará dónde guardarlo, el valor predeterminado está bien. Le pedirá que ingrese una frase de contraseña. Esto es para cifrar la clave en caso de que la computadora sea robada o comprometida. Si no desea una frase de contraseña, deje ambas frases de contraseña en blanco.
El primer comando crea una clave ssh para el usuario actual en el que se ejecuta. El segundo comando ssh ingresa al servidor y agrega la clave del usuario actual a la lista del servidor de quién puede iniciar sesión. Dado que ssh-copy-id está usando ssh, deberá hacer esto antes de deshabilitar los inicios de sesión con contraseña.
Las claves SSH son dos mitades coincidentes. Una mitad se les dice a todos, la otra se mantiene en secreto. Usando un algoritmo matemático, la mitad pública se puede usar para descifrar datos cifrados con la clave privada. Si los datos se descifran con éxito con la clave pública, sabrá sin lugar a dudas que fue la mitad privada de la clave la que los cifró. Entonces, cuando inicia sesión con una clave ssh, el cliente envía un mensaje (cifrado con la clave privada) que básicamente dice "déjeme entrar". El servidor verifica usando la clave pública y si la clave pública está en la lista de computadoras permitidas, el inicio de sesión es exitoso.
ssh-copy-id está (usando ssh) copiando la mitad pública a la lista de servidores de qué claves pueden iniciar sesión (esta lista se almacena en /home/cat /media/USB/stick/path/to/id_rsa.pub >>/home/<username>/.ssh/authorized_keys2
en el servidor.)