So speichern Sie SSH-Anmeldeinformationen im Terminal

Ich bin neu beim MacBook und führe El Capitan aus.

Ich migriere meine Maschinennutzung von einem PC auf ein MacBook. Ich bin langjähriger Benutzer von PuTTY und SuperPuTTY auf einem PC.

Ich möchte Anmeldeinformationen für meine Webserver im MacBook Terminal erstellen und speichern, genau wie ich es in SuperPuTTY auf dem PC getan habe.

Ist es möglich, Anmeldeinformationen für den Webserver in Mac Terminal zu speichern?

Hier ist mein Gesamtziel:

Ich würde gerne wissen, ob es in Mac Terminal eine einfache Möglichkeit gibt, die folgenden Anmeldeinformationen für die Befehlszeile zu speichern und dann eine Art Shortcode zu verwenden, um über Terminal eine Verbindung zu meinem Webserver herzustellen:

ssh -p 2200 root@123.456.789.012
Password: ****************************************************************

Ich verwalte und verbinde mich mit 5 verschiedenen Webservern, sodass das Sortieren und Organisieren der Anmeldedaten in einer kurzen/schnellen Verbindungsmethode eine enorme Zeitersparnis wäre. Vor allem, weil meine Passwörter kryptische 64-Zeichen-Strings sind.

Ich habe die Kommentare gelöscht, da Tammys Edit-Version drei dies in Bezug auf Klarheit und Nützlichkeit aus dem Park geschlagen hat. Gut gemacht!

Antworten (4)

Sie können Ihren öffentlichen Schlüssel auf die Remote-Computer kopieren. Solange die Authentifizierung mit öffentlichem Schlüssel aktiviert ist und Ihr öffentlicher Schlüssel auf dem Remotecomputer vorhanden ist, können Sie sshauf die Computer zugreifen, ohne ein Kennwort angeben zu müssen.

Zuerst müssen Sie ein öffentliches/privates Schlüsselpaar wie folgt generieren:

ssh-keygen -t rsa

Folgen Sie den Anweisungen. Wenn Sie gefragt werden, ob Sie den Schlüssel mit einer Passphrase schützen möchten, sagen Sie JA! Es ist eine schlechte Angewohnheit, Ihre Schlüssel nicht mit einem Passwort zu schützen, und ich zeige Ihnen, wie Sie das Passwort nur ab und zu eingeben müssen.

Wenn Sie bereits ein Schlüsselpaar haben, können Sie den obigen Schritt überspringen.

Angenommen, Ihr ssh-Schlüssel existiert auf Ihrem Mac als ~/.ssh/id_rsa.pub, können Sie ihn auf einem Remote-Computer installieren, indem Sie Folgendes ausführen:

cat ~/.ssh/id_rsa.pub | ssh user@123.45.56.78 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

Für Ihr oben zitiertes spezifisches Serverbeispiel würde der Befehl wie folgt aussehen:

cat ~/.ssh/id_rsa.pub | ssh -p 2200 root@123.456.789.012 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

Sie müssen das Passwort für diese Kopie eingeben root@123.456.789.012, aber dies sollte das letzte Mal sein, dass Sie dies tun müssen. Angenommen, der Remote-Server sshdist für die Authentifizierung mit öffentlichem und privatem Schlüssel eingerichtet, wenn Sie jetzt eine SSH-Verbindung zur Box herstellen, sollte er Sie nicht nach einem Passwort für das rootKonto fragen – stattdessen werden Sie nach dem Passwort für Ihren Schlüssel gefragt . Lesen Sie weiter, um zu erfahren, wie Sie dies zu etwas machen, das Sie nicht ständig eingeben müssen.

Wiederholen Sie das Obige für jeden Computer, auf den Sie sich mit Ihren Schlüsseln anstelle eines Passworts einloggen möchten.

Bitte beachten Sie, dass jeder , der Zugriff auf Ihre ~/.ssh/id_rsaDatei hat, per ssh auf diesen Computer zugreifen kann, rootohne ein Passwort für den entfernten Computer anzugeben. Der Kennwortschutz der Schlüsseldatei stellt sicher, dass sie das Kennwort für diesen Schlüssel kennen müssen, um ihn verwenden zu können. Stellen Sie sicher, dass die Datei sicher ist. Verwenden Sie die Festplattenverschlüsselung auf Ihrem Mac und halten Sie die Berechtigungen für die Datei und das ~/.ssh/Verzeichnis streng.

Um die Verwendung des Schlüssels zu vereinfachen, ohne jedes Mal das Passwort eingeben zu müssen, führt OS X einen ssh-agentProzess im Hintergrund auf Ihrem Computer aus. Dieser Agent speichert das Schlüsselpaar bei der ersten Verwendung im Cache, sodass Sie Ihr Passwort nur ab und zu eingeben müssen. Wenn Sie Ihren Mac nur in den Ruhezustand versetzen, starten Sie ihn niemals neu, Sie können längere Zeit ohne Passworteingabe auskommen.

Sie können alle Ihre SSH-Schlüssel vorab zwischenspeichern, ssh-agentindem Sie Folgendes ausführen:

ssh-add

Jetzt müssen Sie sich nur noch das Schlüsselpasswort merken , nicht die vielen verschiedenen Kontopasswörter. Normalerweise bewahre ich meine Schlüsselpasswörter in 1Password auf (keine Zugehörigkeit), was die Anzahl der Passwörter, die ich mir merken muss, weiter vereinfacht. Dann schaue ich sie einfach in 1Password nach und schneide sie aus und füge sie in das Terminal ein, wenn ich gelegentlich meinen Mac neu starte und meinen Lauf ssh-agentneu starte.

Wenn Sie in dieser Frage das Kopieren Ihres Schlüssels auf Remotecomputer mit der Terminal.app-Verbindungsverwaltungslösung kombinieren , haben Sie etwas, das PuTTY für die GUI-Verbindungserfahrung sehr nahe kommt.


Überprüfen Sie auf der Serverseite Folgendes /etc/ssh/sshd_configund stellen Sie sicher:

PubkeyAuthentication yes

ist in der Konfiguration aktiviert (standardmäßig in OpenSSH). Sie können auch Folgendes einstellen:

PasswordAuthentication no

Während Sie dort sind, ist die passwortbasierte Authentifizierung deaktiviert und Schlüssel sind die einzige Möglichkeit, auf das Gerät zuzugreifen.

Sie müssen sshd auf dem Computer neu starten, wenn Sie Änderungen an der Konfigurationsdatei vornehmen.

Danke @IamC - diese Antwort ist großartig und ich bin sicher, dass sie funktionieren wird. Ich habe heute Morgen hier im Mac-Kanal ein Stack-Exchange-Konto erstellt, um zu sehen, ob ich eine schnelle und einfache Möglichkeit finden kann, Anmeldeinformationen im Terminal oder auf dem Mac irgendwie zu speichern. Es sieht so aus, als wäre dies äußerst kompliziert und für mich keine praktikable Lösung. Hier ist der Grund: <mehr>
<Fort.> Ich habe über die Befehlszeile Zugriff auf eine Reihe von Webservern (insgesamt 5). Ich habe einen Desktop-PC in meinem Büro mit SSH-Zugriff (über PuTTY) auf diese Webserver. Ich habe einen großen Laptop-PC in meinem Heimbüro mit SSH-Zugriff (über PuTTY) auf diese Webserver. Ich habe gerade ein MacBook Air für Reisen und Kundenbesuche vor Ort gekauft. Es ist perfekt für diesen speziellen Bedarf. Ich hatte gehofft, SSH-Verbindungen zu den Servern so einfach wie über PuTTY und SuperPuTTY auf dem PC zu machen. <mehr>
<Fort.> Aber ich kann die öffentliche Authentifizierungsschlüsselroute nicht durchlaufen, weil ich die Art und Weise ändern müsste, wie PuTTY auf meinen Heim- und Büro-PCs funktioniert. Es ist eine zu entmutigende Aufgabe geworden, den Mac wie meinen PC funktionieren zu lassen, also denke ich, dass ich mich einfach an den Kopier- und Einfügeprozess halten muss, um eine Verbindung von meinem Mac herzustellen. Danke für deine Hilfe. Ich weiß es sehr zu schätzen, dass Sie mir dabei helfen, meinen Prozess zu vereinfachen.
Es ist eine großartige Antwort @IanC und ich bin sicher, dass sie anderen eigenständigen Mac-Benutzern helfen wird.
@tammy können Sie PasswordAuthentication yesauf der Serverseite belassen und PuTTY wird weiterhin so funktionieren, wie es auf Ihrem Windows-Computer immer funktioniert hat. Dies ist kein Entweder-Oder-Szenario – Sie können beide Arten der Authentifizierung auf dem Server zulassen. PuTTY unterstützt auch die Autorisierung öffentlicher/privater Schlüssel wie diese FWIW. Sie können Ihre ~/.ssh/id_rsa*Dateien auf Ihren Windows-Computer kopieren und zur Authentifizierung beim Server in PuTTY importieren. PuTTY verwendet unter der Haube genau die gleichen OpenSSH-Bibliotheken für die Verbindung wie sshunter OS X.
Um Ihren Schlüssel auf einen Server zu kopieren, ist der ssh-copy-idBefehl einfacher: ssh-copy-id user@example.com. Es ist nicht standardmäßig auf OS X installiert, aber es ist nur ein brewWeg...
Ich denke, es muss erwähnt werden, dass OS X den ssh-agenten standardmäßig eingerichtet und aktiviert hat und anbieten wird, Schlüssel, die Sie verwenden, automatisch hinzuzufügen. Eine manuelle SSH-Agent-Konfiguration ist absolut nicht erforderlich.
@AndrewMedico guter Punkt. Ich habe das .bash_profileZeug entfernt und festgestellt, dass OS X den Agenten für Sie ausführt.
ssh-addfunktioniert auch in Sierra (OS X 10.12). Danke
Wenn jemand es wie ich in seinem Mac-Schlüsselbund speichern / zwischenspeichern möchte, können Sie verwendenssh-add -k ~/.ssh/id_rsa

Sie können sshpass verwenden, um das Passwort zu speichern und müssen es nicht jedes Mal eingeben, was keine gute Praxis ist (Sicherheitsprobleme).

Befolgen Sie die Anweisungen zur Installation von Mac OS X auf: https://gist.github.com/arunoda/7790979

Wenn Sie sshpass installiert haben, führen Sie es aussshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no root@123.456.789.012:2200

Machen Sie dasselbe für Ihre 5 Webserver und Sie müssen das Passwort nicht jedes Mal eingeben.

Ich fühle mich viel zu dumm in dieser Hinsicht. Ich denke, die Verwendung eines PCs mit PuTTY und SuperPuTTY hat mich einfach zu weit von der Basisbefehlszeile entfernt. Ich habe meine OQ mit meinem Gesamtziel bearbeitet. Guck mal.
Ich gehe jetzt davon aus, dass Sie sich mit root@123.456.789.012 verbinden können und den Prozess nur automatisieren möchten. Sie möchten im Grunde nicht jedes Mal tippen ssh -p 2200 root@123.456.789.012und Password: **********************?
ssh-copy-idist nicht Teil der Standard-OS-X-Distribution.
@IanC. Ich glaube, ich habe vergessen, dass ich es mit Brew installiert habe. werde meine Antwort ändern
Du hast es verstanden @maetsoh – genau das möchte ich hier erreichen.
Ok, danke für diese Antwort @maetsoh, aber als ich mir die Installation unter OS X angesehen habe ( guide.macports.org/chunked/installing.xcode.html ), standen mir die Haare zu Berge :) Ich denke, ich werde nur Passwörter usw. eingeben. oder finden Sie eine andere Lösung, da die Rationalisierung dieses Prozesses auf diesem Weg viel zu kompliziert wird. Aber danke fürs Helfen.

Zusätzlich zu den öffentlichen/privaten Schlüsseln kann die .ssh/config-Datei konfiguriert werden, um die Verwendung von ssh-Befehlen zu erleichtern, wie Aliase, Standardbenutzer/Port pro Server, ssh-Optionen, Proxy-Befehle...

Grundsätzlich kann alles Komplizierte, das Sie in einen ssh-Befehl einfügen können, auch in dieser Datei enthalten sein.

Ich habe Putty als natives Anwendungspaket auf den Mac portiert, sodass Sie keine Macports oder Terminals benötigen, wenn Sie kein technischer Benutzer sind.

Weitere Informationen mit Screenshots finden Sie hier: http://www.wine-reviews.net/2016/08/putty-for-mac-os-x-now-available.html

Prost,

Willkommen bei Ask Different! Beantworten Sie die Frage unbedingt direkt. Wenn ich ein Produkt erwähne, an dem Sie arbeiten, ist das in Ordnung, aber versuchen Sie, zum Thema zu bleiben, anstatt denselben Marketing-Klappentext in mehrere Posts einzufügen.