Cómo almacenar credenciales de SSH en la terminal

27

Soy nuevo en el MacBook y estoy ejecutando El Capitan.

Estoy migrando el uso de mi máquina de una PC a una MacBook. Soy usuario desde hace mucho tiempo de PuTTY y SuperPuTTY en una PC.

Quiero crear y guardar las credenciales de inicio de sesión en mis servidores web en MacBook Terminal como lo hice en SuperPuTTY en la PC.

¿Es posible guardar las credenciales de inicio de sesión del servidor web en Mac Terminal?

Aquí está mi objetivo general:

Me gustaría saber si hay una forma fácil en Mac Terminal para almacenar las siguientes credenciales de inicio de sesión en la línea de comandos y luego usar algún tipo de código abreviado para conectarme a mi servidor web a través de Terminal:

ssh -p 2200 [email protected]
Password: ****************************************************************

Administro y me conecto a 5 servidores web diferentes, por lo que ordenar y organizar las credenciales de inicio de sesión en un método de conexión corto / rápido sería un gran ahorro de tiempo. Especialmente porque mis contraseñas son cadenas de 64 caracteres crípticas.

    
pregunta tammy 09.10.2015 - 16:31

4 respuestas

40

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.

    
respondido por el Ian C. 09.10.2015 - 18:53
1

Puede usar sshpass para guardar la contraseña y no tendrá que insertar cada vez que no sea una buena práctica (problemas de seguridad).

Siga las instrucciones para la instalación de mac os x en: enlace

Cuando tenga sshpass instalado, ejecute sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no [email protected]:2200

haga lo mismo con sus 5 servidores web y no tendrá que insertar la contraseña cada vez.

    
respondido por el enzo 09.10.2015 - 18:16
1

Además de la clave de clave pública / privada, el archivo .ssh / config se puede configurar para facilitar el uso de los comandos ssh, como alias, usuario / puerto predeterminados por servidor, opciones ssh, comandos proxy ...

Básicamente, cualquier cosa complicada que puedas poner en un comando ssh puede estar en este archivo también.

    
respondido por el user2189998 09.10.2015 - 21:57
-1

He portado Putty to Mac como un paquete de aplicaciones nativas, por lo que no es necesario usar macports o terminales si no eres un usuario técnico.

Más información con capturas de pantalla está aquí: enlace

Saludos,

    
respondido por el twickline 31.08.2016 - 21:34

Lea otras preguntas en las etiquetas