Come gestire più sessioni ssh con facilità su Mac OS X.


9

Nel mio prossimo lavoro gestirò molti server con accesso SSH. Sarà come ~ 100-120 host, con un nome utente diverso sulla maggior parte degli host, e sono abbastanza sicuro di non ricordare ogni nome di dominio host, per non parlare di quale nome utente si trova su ciascun host.

Esiste uno strumento per Mac OS X (preferibilmente Lion) che mi consentirebbe di definire una sessione per ciascun host (in una sessione intendo nome utente e alcune opzioni ssh), mostrare l'elenco di tali sessioni e connettersi automaticamente facendo clic / selezionare?

Risposte:


6

Esistono due modi in cui gestisco o ho visto gestire le persone, i dati SSH:

Buono 'ole, riga di comando, testo semplice, file ssh_config .

Crea un file chiamato configdentro ~/.ssh. È possibile specificare i parametri globali mettendoli sopra qualsiasi dichiarazione host. Quando ho iniziato a utilizzare MacPorts , ho dovuto definire esplicitamente una chiave privata SSH predefinita da utilizzare automaticamente durante la connessione, così come la prima riga del file che ho inserito;

IdentityFile ~/.ssh/id_rsa

Quando definisci regole personalizzate per gli host (e puoi persino usare * come carattere jolly), è simile al seguente:

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

Quindi, quando corro, ssh prod-scriptad esempio, tutte le altre regole vengono applicate automaticamente.


Molte persone che non vogliono gestire manualmente tutte le loro cose in modo così ingombrante trovano rapidamente JellyfiSSH . ( Link al Mac App Store . Le stesse persone si sono anche infastidite quando ha smesso di essere scaricabile gratuitamente.)

JellyfiSSH ti dà accesso alla GUI a quasi tutto ciò che può essere specificato nella riga di comando o nel file ssh_config. JellyfiSSH è solo un'app di archiviazione della configurazione a fini organizzativi, poiché genera i comandi in base alle opzioni impostate e facendo clic su Connetti, apre una nuova finestra del terminale con tutte le opzioni definite nella riga di comando. JellyfiSSH non è un'app terminale da sola.


JellyfiSSH sembra l'app che stavo cercando. Grazie!
kars7e,

Cordiali saluti: man ssh_configdal Terminale fornirà le informazioni sui file di configurazione del client SSH OpenSSH disponibili sull'installazione corrente del sistema. Che, al momento del commento, è più recente del link per sviluppatori sopra riportato.
l

5

È possibile creare file come Example.commandquindi renderlo eseguibile: chmod 755 Example.commande fare doppio clic sul file per aprire una connessione:

#!/bin/sh

exec /usr/bin/ssh username@example.com

exit 0

Se vuoi solo essere in grado di connetterti dalla riga di comando usando un alias (parola facile da ricordare), puoi impostarli in ~ / .ssh / config

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

Quindi è possibile connettersi utilizzando l'host foo

ssh foo

Oppure puoi semplicemente creare funzioni nel tuo file di configurazione della shell (~ / .bashrc o ~ / .zshenv):

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

quindi puoi connetterti example.comsemplicemente digitando s1dalla riga di comando e utilizzerà la verbosità di livello 1.

Infine, è possibile utilizzare il completamento automatico di ssh, ma la sintassi dipenderà dalla shell scelta. Un rapido google per "completare automaticamente YourShellHere" dovrebbe mostrare alcuni esempi.

Usa una passphrase e il portachiavi di OS X.

La cosa più importante, IMO, è configurare ssh per lavorare con una passphrase. OS X ha un'ottima integrazione portachiavi integrata da 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'

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

Quindi quando accedi a una nuova macchina, il portachiavi di OS X ti chiederà la passphrase di ssh

Vedi anche http://www.dribin.org/dave/blog/archives/2007/11/28/ssh_agent_leopard/ per una descrizione più completa. L'articolo è più vecchio, ma Lion funziona allo stesso modo.

Non dimenticare Dropbox

Se accedi a più macchine, puoi sincronizzare il tuo ~/.ssh/configfile tramite Dropbox. Tengo il mio dentro ~/Dropbox/etc/ssh/config.txte poi faccio:

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

Faccio la stessa cosa con il mio ~ / .zshenv:

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

In effetti, ho inserito tutti i miei script shell in ~ / Dropbox / bin / e l'ho aggiunto anche al mio $ PATH, solo per coprire tutte le mie basi.


Dropbox è un ottimo posto per archiviare script di shell che non voglio gestire in git / su GitHub. Grazie per aver scatenato quel momento "aha", TJ!
Jason Salaz,

-2

Puoi provare l' app vSSH per Mac OS X ( basata su PuTTY ).

  • Gestisci l'elenco delle connessioni (host, porta, nome utente, password, chiavi e molte altre impostazioni)
  • Può quasi tutto ciò che può PuTTY
  • Interfaccia multi-finestra multi-tab
  • Supporto per le macro (si eseguono shell di script come voci di menu per un accesso rapido)
  • Sincronizzazione iCloud (connessioni, macro e chiavi) con app di controllo vSSH e SSH per iOS

Disponibile su Mac AppStore .


Benvenuti a chiedere diverso! Si prega di leggere il centro assistenza per quanto riguarda l' autopromozione e includere una dichiarazione di non responsabilità se si è l'autore del prodotto nella risposta.
grg

1
In che modo ciò consente effettivamente un elenco di sessioni selezionabile? Se potessi modificare parte del marketing generico e concentrarlo sulla domanda esatta a portata di mano, probabilmente otterrà una reazione migliore.
bmike
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.