So verwalten Sie problemlos mehrere SSH-Sitzungen unter Mac OS X.

9

Bei meinem nächsten Job werde ich viele Server mit SSH-Zugriff verwalten. Es wird wie ~ 100-120 Hosts sein, mit unterschiedlichem Benutzernamen auf den meisten Hosts, und ich bin mir ziemlich sicher, dass ich mich nicht an jeden Host-Domain-Namen erinnern werde, ganz zu schweigen davon, welcher Benutzername auf jedem Host ist.

Gibt es ein Tool für Mac OS X (vorzugsweise Lion), mit dem ich eine Sitzung für jeden Host definieren kann (in einer Sitzung meine ich den Benutzernamen und einige SSH-Optionen), eine Liste solcher Sitzungen anzeigen und beim Klicken / Auswählen automatisch eine Verbindung herstellen kann?

kars7e
quelle

Antworten:

6

Es gibt zwei Möglichkeiten, wie ich SSH-Daten verwalte oder von Personen verwaltet habe:

Gute alte, Befehlszeile, Klartext, ssh_config- Datei.

Erstellen Sie eine Datei mit dem Namen configinside ~/.ssh. Sie können globale Parameter angeben, indem Sie sie über alle Hostdeklarationen setzen. Als ich anfing, MacPorts zu verwenden , musste ich explizit einen privaten SSH-Schlüssel definieren, der beim Verbinden automatisch verwendet wird, also als allererste Zeile der Datei, die ich eingefügt habe.

IdentityFile ~/.ssh/id_rsa

Wenn Sie benutzerdefinierte Regeln für Hosts definieren (und * sogar als Platzhalter verwenden können), sieht dies ungefähr so ​​aus:

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

Wenn ich dann ssh prod-scriptzum Beispiel starte, werden alle anderen Regeln automatisch angewendet.


Viele Leute, die nicht alle ihre Sachen so umständlich manuell verwalten wollen, finden JellyfiSSH schnell . ( Mac App Store Link . Dieselben Leute waren auch sehr verärgert, als es nicht mehr kostenlos heruntergeladen werden konnte.)

Mit JellyfiSSH erhalten Sie über die GUI Zugriff auf fast alles, was in der Befehlszeile oder in der Datei ssh_config angegeben werden kann. JellyfiSSH ist nur eine Konfigurationsspeicher-App für Organisationszwecke, da sie die Befehle basierend auf den von Ihnen festgelegten Optionen generiert und beim Klicken auf Verbinden ein neues Terminalfenster mit allen in der Befehlszeile definierten Optionen öffnet. JellyfiSSH ist keine eigenständige Terminal-App.

Jason Salaz
quelle
JellyfiSSH sieht aus wie eine App, nach der ich gesucht habe. Vielen Dank!
kars7e
Zu man ssh_configIhrer Information : Über das Terminal werden Informationen zu OpenSSH SSH-Client-Konfigurationsdateien bereitgestellt, die in Ihrer aktuellen Systeminstallation verfügbar sind. Was zum Zeitpunkt des Kommentars aktueller ist als der obige Entwicklerlink.
l
5

Sie können Dateien erstellen, z. B. Example.commandausführbar machen: chmod 755 Example.commandund auf die Datei doppelklicken, um eine Verbindung herzustellen:

#!/bin/sh

exec /usr/bin/ssh [email protected]

exit 0

Wenn Sie nur über einen Alias ​​(leicht zu merkendes Wort) eine Verbindung über die Befehlszeile herstellen möchten, können Sie diese in ~ / .ssh / config einrichten

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

Dann können Sie über den Host eine Verbindung herstellen foo

ssh foo

Oder Sie können einfach Funktionen in Ihrer Shell-Konfigurationsdatei (~ / .bashrc oder ~ / .zshenv) erstellen:

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

Dann können Sie eine Verbindung herstellen, example.comindem Sie einfach s1in die Befehlszeile tippen, und es wird die Ausführlichkeit der Stufe 1 verwendet.

Schließlich könnten Sie die automatische Vervollständigung von ssh verwenden, aber die Syntax dafür hängt von der Shell Ihrer Wahl ab. Eine schnelle Google-Suche nach "ssh autocomplete YourShellHere" sollte einige Beispiele liefern.

Verwenden Sie eine Passphrase und den OS X-Schlüsselbund

Das Wichtigste, IMO, ist, ssh so einzurichten, dass es mit einer Passphrase arbeitet. OS X verfügt seit Leopard über eine hervorragende integrierte Schlüsselbundintegration.

ssh-keygen -t dsa -f ~/.ssh/id_dsa -C "[email protected]"

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

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

Wenn Sie dann auf einen neuen Computer ssh, werden Sie vom OS X-Schlüsselbund zur Eingabe Ihrer ssh-Passphrase aufgefordert

Eine ausführlichere Beschreibung finden Sie auch unter http://www.dribin.org/dave/blog/archives/2007/11/28/ssh_agent_leopard/ . Der Artikel ist älter, aber Lion funktioniert genauso.

Dropbox nicht vergessen

Wenn Sie sich bei mehreren Computern anmelden, können Sie Ihre ~/.ssh/configDatei über Dropbox synchronisieren . Ich behalte meine ~/Dropbox/etc/ssh/config.txtund dann mache ich:

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

Ich mache das gleiche wie mit meinem ~ / .zshenv:

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

Tatsächlich habe ich alle meine Shell-Skripte in ~ / Dropbox / bin / abgelegt und das auch zu meinem $ PATH hinzugefügt, um alle meine Basen abzudecken.

TJ Luoma
quelle
Dropbox ist ein großartiger Ort, um Shell-Skripte zu speichern, die ich nicht in git / auf GitHub verwalten möchte. Danke, dass du diesen Aha-Moment ausgelöst hast, TJ!
Jason Salaz
-2

Sie können die vSSH- App für Mac OS X ( PuTTY- basiert) ausprobieren .

  • Verbindungsliste verwalten (Host, Port, Benutzername, Passwort, Schlüssel und viele andere Einstellungen)
  • Kann fast alles was PuTTY kann
  • Multi-Tab-Multi-Window-Oberfläche
  • Makros unterstützen (Sie schälen Skripte als Menüelemente für den schnellen Zugriff)
  • iCloud-Synchronisation (Verbindungen, Makros und Schlüssel) mit vSSH- und SSH-Steuerungs- Apps für iOS

Verfügbar im Mac AppStore .

Wer bin ich
quelle
Willkommen bei Ask Different! Bitte lesen Sie die Hilfe zur Eigenwerbung und fügen Sie Ihrer Antwort einen Haftungsausschluss bei, wenn Sie der Autor des Produkts sind.
grg
1
Wie ermöglicht dies tatsächlich eine anklickbare Liste von Sitzungen? Wenn Sie einen Teil des generischen Marketings herausarbeiten und dies auf die genaue Frage konzentrieren könnten, wird es wahrscheinlich eine bessere Reaktion erhalten.
bmike