Puede copiar su clave pública a las máquinas remotas. Mientras tengan habilitada la autenticación de clave pública y su clave pública esté presente en la máquina remota, puede ssh
a las máquinas sin tener que proporcionar una contraseña.
Primero deberá generar un par de claves públicas / privadas como:
ssh-keygen -t rsa
Sigue las indicaciones. Cuando le pregunte si desea proteger la clave con una frase de contraseña, diga SÍ. Es una mala práctica no proteger con contraseña sus claves y le mostraré cómo solo debe ingresar la contraseña de vez en cuando.
Si ya tiene par de llaves, puede omitir el paso anterior.
Ahora, asumiendo que su clave ssh existe en su Mac como ~/.ssh/id_rsa.pub
, puede instalarla en una máquina remota ejecutando:
cat ~/.ssh/id_rsa.pub | ssh [email protected] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Para el ejemplo de servidor específico citado anteriormente, el comando se vería así:
cat ~/.ssh/id_rsa.pub | ssh -p 2200 [email protected] "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Tendrá que ingresar la contraseña para que [email protected]
realice esta copia, pero esta debe ser la última vez que necesite hacerlo. Suponiendo que sshd
del servidor remoto está configurado para realizar la autenticación de clave pública-privada, cuando esté en el buzón ahora, no debería pedirle una contraseña para la cuenta root
; en su lugar, le pedirá la contraseña para su clave . Siga leyendo para saber cómo hacer que esto sea algo que no necesita ingresar todo el tiempo.
Repita lo anterior para cada máquina que desee enviar con sus claves en lugar de una contraseña.
Tenga en cuenta que cualquier persona que obtenga una retención de su archivo ~/.ssh/id_rsa
puede acceder a esta máquina como root
sin proporcionar una contraseña para la máquina remota. La contraseña que protege el archivo de clave garantiza que necesitarán saber la contraseña para que la clave la use. Asegúrese de que el archivo es seguro. Use el cifrado de disco en su Mac y mantenga los permisos en el archivo y el directorio ~/.ssh/
apretados.
Para facilitar el uso de la clave sin tener que ingresar la contraseña cada vez, OS X ejecuta un proceso ssh-agent
en segundo plano en su máquina. Este agente almacenará en caché el par de llaves 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.
Puedes precachar todas tus claves SSH con el ssh-agent
ejecutando:
ssh-add
Ahora solo necesita recordar la contraseña de clave , no las muchas contraseñas de cuentas diferentes. Normalmente guardo mis contraseñas clave en 1Password (sin afiliación), lo que simplifica aún más cuántas contraseñas necesito recordar. Luego simplemente los busco en 1Password y los recorté y pegué en la Terminal cuando reinicio mi Mac y hago que se reinicie ssh-agent
.
Si combina la copia de su 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á predeterminado en OpenSSH). También es posible que desee establecer:
PasswordAuthentication no
Mientras estás allí, la autenticación basada en contraseña está deshabilitada y las claves se convierten en la única forma de acceder a la máquina.
Deberá reiniciar sshd en la máquina si realiza cambios en el archivo de configuración.