Puede copiar su clave pública en las máquinas remotas. Siempre que tengan habilitada la autenticación de clave pública y su clave pública esté presente en la máquina remota, puede acceder ssh
a las máquinas sin tener que proporcionar una contraseña.
Primero deberá generar un par de claves público / privado de esta manera:
ssh-keygen -t rsa
Sigue las indicaciones. Cuando le pregunte si desea proteger la clave con una frase de contraseña, ¡responda SÍ! Es una mala práctica no proteger sus claves con contraseña y le mostraré cómo ingresar solo la contraseña de vez en cuando.
Si ya tiene un par de claves, puede omitir el paso anterior.
Ahora, suponiendo que su clave ssh exista en su Mac ~/.ssh/id_rsa.pub
, puede instalarla en una máquina remota ejecutando:
cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Para su ejemplo de servidor específico citado anteriormente, el comando se vería así:
cat ~/.ssh/id_rsa.pub | ssh -p 2200 root@123.456.789.012 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Tendrá que ingresar la contraseña para root@123.456.789.012
realizar esta copia, pero esta debería ser la última vez que necesite hacerlo. Suponiendo que el servidor remoto sshd
esté configurado para realizar la autenticación de clave pública-privada, cuando ingrese a la casilla ahora no debería pedirle una contraseña para la root
cuenta; en su lugar, le pedirá la contraseña para su clave . Siga leyendo para saber cómo hacer de esto algo que no necesita ingresar todo el tiempo.
Repita lo anterior para cada máquina en la que desee ingresar con sus claves en lugar de una contraseña.
Tenga en cuenta que cualquiera que obtenga su ~/.ssh/id_rsa
archivo puede enviar ssh a esta máquina root
sin proporcionar una contraseña para la máquina remota. La contraseña que protege el archivo de clave garantiza que necesitarán conocer la contraseña para que esa clave la use. Asegúrese de que el archivo sea seguro. Use el cifrado de disco en su Mac y mantenga ~/.ssh/
estrictos los permisos en el archivo y el directorio.
Para facilitar el uso de la clave sin tener que ingresar la contraseña cada vez, OS X ejecuta un ssh-agent
proceso en segundo plano en su máquina. Este agente almacenará en caché el par de claves la primera vez que lo use, por lo que solo tendrá que ingresar su contraseña de vez en cuando. Si solo duerme su Mac, nunca lo reinicie, puede pasar largos períodos de tiempo sin necesidad de ingresar su contraseña.
Puede pre-cachear todas sus claves SSH con ssh-agent
:
ssh-add
Ahora solo necesita recordar la contraseña clave , no las diferentes contraseñas de cuenta. Por lo general, mantengo mis contraseñas clave en 1Password (sin afiliación), lo que simplifica aún más la cantidad de contraseñas que necesito recordar. Luego, solo los busco en 1Password y los corto y los pego en la Terminal cada vez que reinicio mi Mac y hago que se reinicie mi carrera ssh-agent
.
Si combina copiar esta clave en máquinas remotas con la solución de administración de conexión Terminal.app en esta pregunta , tendrá algo muy cercano a PuTTY para la experiencia de conexión GUI.
En el lado del servidor, verifique /etc/ssh/sshd_config
y asegúrese de:
PubkeyAuthentication yes
está habilitado en la configuración (está por defecto en OpenSSH). También puede establecer:
PasswordAuthentication no
Mientras esté allí, la autenticación basada en contraseña se deshabilita y las claves se convierten en la única forma de acceder a la máquina.
Deberá reiniciar sshd en la máquina si realiza algún cambio en el archivo de configuración.