Cómo almacenar credenciales SSH en Terminal


33

Soy nuevo en el MacBook y estoy ejecutando El Capitan.

Estoy migrando el uso de mi máquina desde una PC a una MacBook. Soy usuario de PuTTY y SuperPuTTY desde hace mucho tiempo 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 de almacenar las siguientes credenciales de inicio de sesión de línea de comandos y luego usar algún tipo de código corto para conectarse 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 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 crípticas de 64 caracteres.


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

Respuestas:


50

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 ssha 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.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 ingrese a la casilla 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 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_rsaarchivo puede enviar ssh a esta máquina rootsin 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-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 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_configy 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.


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 Terminal o 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>
tammy

<cont.> Tengo acceso de línea de comando 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 mi oficina en casa con acceso SSH (a través de PuTTY) a estos servidores web. Acabo de comprar una MacBook Air para viajes y visitas de clientes en el sitio. Es perfecto para esa necesidad particular. Esperaba hacer que las conexiones SSH a los servidores fueran tan fáciles como es a través de PuTTY y SuperPuTTY en la PC. <más>
tammy

<cont.> Pero no puedo pasar por la ruta de clave de autenticación pública porque necesitaría cambiar la forma en que PuTTY funciona en las PC de mi casa y oficina de trabajo. Se ha vuelto una tarea demasiado desalentadora hacer que la Mac funcione como la de mi PC, así que creo que tendré que seguir con el proceso de copiar y pegar para conectarme desde mi Mac. Gracias por tu ayuda. Le agradezco enormemente que me haya ayudado a intentar simplificar mi proceso.
Tammy

2
@tammy puede dejarlo PasswordAuthentication yesen el lado del servidor y PuTTY continuará funcionando como siempre lo ha hecho en su máquina Windows. Este no es uno de los dos escenarios: 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 Windows e importarlos a PuTTY para su autenticación en el servidor. PuTTY, bajo el capó, utiliza exactamente las mismas bibliotecas OpenSSH para conectarse que sshen OS X.
Ian C.

1
ssh-addtodavía funciona incluso en Sierra (OS X 10.12). Gracias
SaxDaddy

4

Puede usar sshpass para guardar la contraseña y no tendrá que insertarla cada vez, lo que 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 instalado sshpass, ejecute sshpass -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.


1
Me siento demasiado tonto con este. Supongo que usar una PC con PuTTY y SuperPuTTY me alejó demasiado de la línea de comando base. Edité mi OQ con mi objetivo general. Echar un vistazo.
tammy

Supongo ahora que puede conectarse a root@123.456.789.012 y solo desea automatizar el proceso. Básicamente no quieres escribir cada vez ssh -p 2200 root@123.456.789.012y Password: **********************?
enzo

ssh-copy-idno es parte de la distribución estándar de OS X.
Ian C.

@IanC. Creo que olvidé que lo instalé con brew. modificará mi respuesta
enzo

Lo tienes @maetsoh, eso es exactamente lo que quiero lograr aquí.
tammy

1

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

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


0

He portado Putty a Mac como un paquete de aplicaciones nativas, por lo que no necesito 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-available.html

Aclamaciones,


¡Bienvenido a Ask Different! Asegúrese de responder la pregunta directamente. Si menciono un producto en el que trabaja, está bien, pero trate de estar en el tema en lugar de pegar la misma publicidad publicitaria en varias publicaciones.
bmike
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.