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

9

En mi próximo trabajo manejaré muchos servidores con acceso SSH. Será como ~ 100-120 hosts, con un 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 hay en cada host.

¿Existe una herramienta para Mac OS X (preferiblemente Lion) que me permita definir una sesión para cada host (en una sesión me refiero a nombre de usuario y algunas opciones ssh), mostrar la lista de tales sesiones y conectarme al hacer clic / seleccionar automáticamente?

kars7e
fuente

Respuestas:

6

Hay dos formas en que administro, o he visto a personas administrar, datos SSH:

Good 'ole, línea de comando, texto plano, archivo ssh_config .

Crea un archivo llamado configdentro ~/.ssh. Puede especificar parámetros globales colocándolos sobre cualquier declaración de host. Cuando comencé a usar MacPorts , tuve que definir explícitamente una clave privada SSH predeterminada para usar automáticamente al conectarme, así como la primera línea del archivo que puse;

IdentityFile ~/.ssh/id_rsa

Cuando define reglas personalizadas para hosts (e incluso puede usar * como comodín), se ve así:

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

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


Muchas personas que no desean 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 ser descargable de forma gratuita).

JellyfiSSH le brinda acceso a la GUI a casi todo lo que se puede especificar en la línea de comando o en el archivo ssh_config. JellyfiSSH es solo una aplicación de almacenamiento de configuración para fines de organización, ya que genera los comandos basados ​​en las opciones que configuró y al hacer clic en conectar, abre una nueva ventana de terminal con todas sus opciones definidas en la línea de comandos. JellyfiSSH no es una aplicación de terminal en sí misma.

Jason Salaz
fuente
JellyfiSSH parece la aplicación que estaba buscando. ¡Gracias!
kars7e
FYI: man ssh_configdesde la Terminal proporcionará información de los archivos de configuración del cliente OpenSSH SSH disponibles en la instalación actual de su sistema. Que, en el momento del comentario, es más reciente que el enlace de desarrollador anterior.
l --mar l l
5

Puede crear archivos como Example.commandluego hacerlo ejecutable: chmod 755 Example.commandy haga doble clic en el archivo para abrir una conexión:

#!/bin/sh

exec /usr/bin/ssh [email protected]

exit 0

Si solo desea poder conectarse desde la línea de comandos 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 realizar funciones en su archivo de configuración de shell (~ / .bashrc o ~ / .zshenv):

s1 () {
    ssh -v [email protected]
}

entonces puedes conectarte example.comsimplemente escribiendo s1en la línea de comando, y usará nivel de detalle 1.

Por último, puede usar la autocompletación ssh, pero la sintaxis para eso dependerá de su shell de elección. Un rápido google para 'ssh autocomplete YourShellHere' debería mostrar 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 "[email protected]"

cat ~/.ssh/id_dsa.pub | ssh [email protected] 'cat – >> ~/.ssh/authorized_keys'

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

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

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

No olvides Dropbox

Si inicia sesión en varias máquinas, puede sincronizar su ~/.ssh/configarchivo a través de Dropbox. Guardo el mío ~/Dropbox/etc/ssh/config.txty luego 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 también los agregué a mi $ PATH, solo para cubrir todas mis bases.

TJ Luoma
fuente
Dropbox es un gran lugar para almacenar scripts de shell que no quiero administrar en git / on GitHub. ¡Gracias por provocar ese momento 'ajá', TJ!
Jason Salaz
-2

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

  • Administre la lista de conexiones (host, puerto, nombre de usuario, contraseña, claves y muchas otras configuraciones)
  • Puede casi todo lo que PuTTY puede
  • Interfaz de múltiples ventanas y múltiples pestañas
  • Compatibilidad con macros (los scripts de shell son elementos de menú para un acceso rápido)
  • Sincronización de iCloud (conexiones, macros y claves) con aplicaciones de control vSSH y SSH para iOS

Disponible en la Mac AppStore .

quién soy
fuente
¡Bienvenido a Ask Different! Lea el centro de ayuda sobre autopromoción e incluya un descargo de responsabilidad si es el autor del producto en su respuesta.
grg
1
¿Cómo permite esto realmente una lista de sesiones en la que se puede hacer clic? Si pudieras editar parte del marketing genérico y enfocar esto a la pregunta exacta en cuestión, probablemente obtendrá una mejor reacción.
bmike