Cómo almacenar credenciales SSH en Terminal

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 credenciales de inicio de sesión en mis servidores web en MacBook Terminal, tal 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 manera fácil en Mac Terminal para almacenar las siguientes credenciales de inicio de sesión de línea de comando y luego usar algún tipo de código abreviado para conectarme a mi servidor web a través de Terminal:

ssh -p 2200 root@123.456.789.012
Password: ****************************************************************

Administro y me conecto a 5 servidores web diferentes, por lo que clasificar 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 crípticas de 64 caracteres.

Eliminé los comentarios ya que la edición tres de Tammy eliminó esto del parque en términos de claridad y utilidad. ¡Bien hecho!

Respuestas (4)

Puede copiar su clave pública a 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 ssha las máquinas sin tener que proporcionar una contraseña.

Primero deberá generar un par de claves pública/privada así:

ssh-keygen -t rsa

Siga 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 sus claves con contraseña y le mostraré cómo ingresar la contraseña solo 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 como ~/.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"

Deberá ingresar la contraseña para root@123.456.789.012realizar esta copia, pero esta debería ser la última vez que necesite hacerlo. Suponiendo que el servidor remoto sshdestá configurado para realizar la autenticación de clave pública-privada, cuando haga ssh en el cuadro ahora no debería pedirle una contraseña para la rootcuenta; 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 a la que desee ingresar con sus claves en lugar de una contraseña.

Tenga en cuenta que cualquier persona que obtenga su ~/.ssh/id_rsaarchivo puede conectarse a esta máquina rootsin proporcionar una contraseña para la máquina remota. La contraseña que protege el archivo de claves garantiza que necesiten saber la contraseña de esa clave para usarla. Asegúrese de que el archivo sea seguro. Use el cifrado de disco en su Mac y mantenga los permisos en el archivo y el ~/.ssh/directorio ajustados.

Para facilitar el uso de la clave sin tener que ingresar la contraseña cada vez, OS X ejecuta un ssh-agentproceso 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 precachear todas sus claves SSH con ssh-agentejecutando:

ssh-add

Ahora solo necesita recordar la contraseña clave , no las muchas contraseñas de cuentas diferentes. 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, simplemente los busco en 1Password y los corto y pego en la Terminal cada vez que reinicio mi Mac y hago que mi ejecución ssh-agentse reinicie.

Si combina la copia de su clave en máquinas remotas con la solución de administración de conexión de Terminal.app en esta pregunta , tendrá algo muy parecido a PuTTY para la experiencia de conexión de GUI.


En el lado del servidor, verifique /etc/ssh/sshd_configy asegúrese de:

PubkeyAuthentication yes

está habilitado en la configuración (está por defecto en OpenSSH). También puede configurar:

PasswordAuthentication no

Mientras está 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 algún cambio en el archivo de configuración.

Gracias @IamC: esta respuesta es excelente y estoy seguro de que funcionará. Creé una cuenta de intercambio de pila aquí en Mac Channel esta mañana para ver si podía encontrar una manera rápida y fácil de guardar las credenciales de inicio de sesión en la Terminal o en la Mac de alguna manera. Parece que hacerlo es extremadamente complicado y no es una solución viable para mí. He aquí por qué: <más>
<cont.> Tengo acceso de línea de comandos a varios servidores web (5 en total). Tengo una PC de escritorio en mi oficina de trabajo con acceso SSH (a través de PuTTY) a estos servidores web. Tengo una computadora portátil grande en la oficina de mi casa con acceso SSH (a través de PuTTY) a estos servidores web. Acabo de comprar una MacBook Air para viajes y visitas a clientes in situ. Es perfecto para esa necesidad en particular. Tenía la esperanza de hacer las conexiones SSH a los servidores tan fáciles como lo es a través de PuTTY y SuperPuTTY en la PC. <más>
<cont.> Pero no puedo pasar por la ruta de la clave de autenticación pública porque necesitaría cambiar la forma en que funciona PuTTY en las PC de mi casa y de la oficina. Hacer que la Mac funcione como mi PC se ha convertido en una tarea demasiado desalentadora, así que creo que tendré que seguir con el proceso de copiar y pegar para conectarme desde mi Mac. Gracias por tu ayuda. Agradezco mucho que me ayuden a tratar de simplificar mi proceso.
Es una gran respuesta @IanC y estoy seguro de que ayudará a otros usuarios de Mac independientes.
@tammy puede dejarlo PasswordAuthentication yesen el lado del servidor y PuTTY seguirá funcionando como siempre lo ha hecho en su máquina con Windows. Este no es un escenario cualquiera: puede permitir ambos tipos de autenticación en el servidor. PuTTY también admite la autorización de clave pública/privada como este FWIW. Puede copiar sus ~/.ssh/id_rsa*archivos a su máquina con Windows e importarlos a PuTTY para la autenticación en el servidor. PuTTY, bajo el capó, usa exactamente las mismas bibliotecas de OpenSSH para conectarse que sshen OS X.
Para copiar su clave a un servidor, el ssh-copy-idcomando es más fácil: ssh-copy-id user@example.com. No está instalado de forma predeterminada en OS X, pero está brewlejos...
Creo que vale la pena mencionar que OS X tiene ssh-agent configurado y habilitado de forma predeterminada, y ofrecerá agregarle las claves que usa automáticamente. La configuración manual de ssh-agent no es absolutamente necesaria.
@AndrewMedico buen punto. Eliminé las .bash_profilecosas y observé que OS X ejecuta el agente por usted.
ssh-addtodavía funciona incluso en Sierra (OS X 10.12). Gracias
Si alguien está buscando guardarlo/almacenarlo en caché en su llavero de Mac como yo, puede usarssh-add -k ~/.ssh/id_rsa

Puede usar sshpass para guardar la contraseña y no tendrá que insertarla cada vez, lo cual no es una buena práctica (problemas de seguridad).

Siga las instrucciones para la instalación de mac os x en: https://gist.github.com/arunoda/7790979

Cuando tenga sshpass instalado, ejecutesshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no root@123.456.789.012:2200

haga lo mismo para sus 5 servidores web y no necesitará insertar la contraseña cada vez.

Me siento demasiado tonto en esto. Supongo que usar una PC con PuTTY y SuperPuTTY me distanció demasiado de la línea de comando base. Edité mi OQ con mi objetivo general. Echar un vistazo.
Supongo que ahora puede conectarse a root@123.456.789.012 y solo desea automatizar el proceso. Básicamente, no desea escribir cada vez ssh -p 2200 root@123.456.789.012y Password: **********************?
ssh-copy-idno es parte de la distribución estándar de OS X.
@IanC. Creo que olvidé que lo instalé con brew. modificare mi respuesta
Lo tienes @maetsoh, eso es exactamente lo que quiero lograr aquí.
Ok, gracias por esta respuesta @maetsoh pero una vez que miré Instalar en OS X ( guide.macports.org/chunked/installing.xcode.html ) se me pusieron los pelos de punta :) Creo que solo escribiré contraseñas, etc. o encuentre algún otro trabajo, ya que simplificar este proceso se está volviendo demasiado complicado en este camino. Pero gracias por ayudar.

Además de las claves públicas/privadas, el archivo .ssh/config se puede configurar para facilitar el uso de los comandos ssh, como alias, usuario/puerto predeterminado por servidor, opciones ssh, comandos proxy...

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

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

Más información con capturas de pantalla está aquí: http://www.wine-reviews.net/2016/08/putty-for-mac-os-x-now-disponible.html

Salud,

¡Bienvenido a Ask Different! Asegúrese de responder la pregunta directamente. Si menciona un producto en el que trabaja, está bien, pero trate de estar en el tema en lugar de pegar la misma propaganda de marketing en varias publicaciones.