Cómo administrar múltiples sesiones ssh con facilidad en Mac OS X

En mi próximo trabajo manejaré muchos serveres con acceso SSH. Será como ~ 100-120 hosts, con nombre de usuario diferente en la mayoría de los hosts, y estoy bastante seguro de que no recordaré cada nombre de dominio de host, sin mencionar qué nombre de usuario está en cada host.

¿Existe una herramienta para Mac OS X (Lion preferiblemente) que me permita definir una session para cada host (en una session quiero decir nombre de usuario y algunas opciones ssh), mostrar la list de dichas sesiones y conectar onclick / seleccionar automáticamente?

Hay dos maneras en que administro, o he visto que la gente maneja, los datos de SSH:

Bien 'ole, command-line, text sin formatting, file ssh_config .

Crea un file llamado config dentro de ~/.ssh . Puede especificar parameters globales poniéndolos sobre cualquier statement de host. Cuando comencé a usar MacPorts , tuve que definir explícitamente una key privada SSH pnetworkingeterminada para utilizarla automáticamente cuando me conecté, así como la primera línea del file que puse;

 IdentityFile ~/.ssh/id_rsa 

Cuando define reglas personalizadas para hosts (e incluso puede usar * como un comodín), se ve más o less así:

 Host prod-* User jason Port 2222 LocalForward 5901 localhost:5901 IdentityFile ~/.ssh/work-id_rsa 

Luego, cuando ejecuto ssh prod-script por ejemplo, todas las demás reglas se aplican automáticamente.


Muchas personas que no quieren administrar manualmente todas sus cosas de una manera tan engorrosa encuentran rápidamente JellyfiSSH . ( Mac App Store Link . Las mismas personas también se molestaron mucho cuando dejó de downloadse gratis).

JellyfiSSH le da acceso a la GUI a casi todo lo que se puede especificar en la command-line o en el file ssh_config. JellyfiSSH es solo una aplicación de almacenamiento de configuration para fines de organización, ya que genera los commands basados ​​en las opciones establecidas y onclick en conectar, abre una nueva window de terminal con todas las opciones definidas en la línea de command. JellyfiSSH no es una aplicación de terminal por sí mismo.

Puede crear files como Example.command luego hacerlo ejecutable: chmod 755 Example.command y hacer doble clic en el file para abrir una connection:

 #!/bin/sh exec /usr/bin/ssh username@example.com exit 0 

Si solo desea poder conectarse desde la línea de command utilizando un alias (palabra fácil de recordar), puede configurarlos en ~ / .ssh / config

 Host foo HostName some.really.long.hostname.here.com Port 22 User bigfun 

Entonces puedes conectarte usando el host foo

 ssh foo 

O simplemente puede hacer funciones en su file de configuration de shell (~ / .bashrc o ~ / .zshenv):

 s1 () { ssh -v username@example.com } 

luego puede conectarse a example.com simplemente escribiendo s1 en la línea de command, y usará nivel 1 de verbosidad.

Por último, puede usar ssh auto-completion, pero la syntax para eso dependerá de su shell de elección. Un rápido google para 'ssh autocomplete YourShellHere' debería dar algunos ejemplos.

Use una frase de contraseña y el llavero OS X.

Lo más importante, IMO, es configurar ssh para que funcione con una frase de contraseña. OS X tiene una gran integración de llavero incorporada desde Leopard.

 ssh-keygen -t dsa -f ~/.ssh/id_dsa -C "you@exampledomain.com" cat ~/.ssh/id_dsa.pub | ssh you@host.domain 'cat – >> ~/.ssh/authorized_keys' 

(Fuente: http://www.paosborne.com/blog/?p=369 .)

Luego, cuando vaya a una nueva máquina, el llavero OS X le pedirá su contraseña de ssh.

Ver también http://www.dribin.org/dave/blog/archives/2007/11/28/ssh_agent_leopard/ para una descripción más completa. El artículo es más antiguo, pero Lion funciona de la misma manera.

No te olvides de Dropbox

Si ~/.ssh/config session en varias máquinas, puede sincronizar su file ~/.ssh/config través de Dropbox. Guardo el mío en ~/Dropbox/etc/ssh/config.txt y luego lo hago:

 cd ~/.ssh ln -s ../Dropbox/etc/ssh/config.txt config 

Hago lo mismo que con mi ~ / .zshenv:

 cd ln -s Dropbox/etc/zshenv.sh .zshenv 

De hecho, puse todos mis scripts de shell en ~ / Dropbox / bin / y lo agregué a mi $ PATH también, solo para cubrir todas mis bases.

Puede probar la aplicación vSSH para Mac OS X (basada en PuTTY ).

  • Administrar la list de conexiones (host, puerto, nombre de usuario, contraseña, keys y muchas otras configuraciones)
  • Puede casi todo lo que PuTTY puede
  • Interfaz multi-pestaña multi-window
  • Admite Macros (guiones de shell como elementos de menu para acceso rápido)
  • Sincronización de iCloud (conexiones, macros y keys) con aplicaciones de control vSSH y SSH para iOS

Disponible en Mac AppStore .