So speichern Sie SSH-Anmeldeinformationen im Terminal


33

Ich bin neu im MacBook und leite El Capitan.

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

Ich möchte Anmeldeinformationen auf meinen Webservern im MacBook Terminal erstellen und speichern, so 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 möchte 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, so dass das Sortieren und Organisieren der Anmeldeinformationen in einer kurzen / schnellen Verbindungsmethode eine enorme Zeitersparnis wäre. Vor allem, weil meine Passwörter kryptische 64-Zeichen-Zeichenfolgen sind.


Ich habe die Kommentare gelöscht, als Tammys Editierversion drei dies in Bezug auf Klarheit und Nützlichkeit aus dem Park warf. Gut gemacht!
bmike

Antworten:


50

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 eingeben zu müssen.

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

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 Praxis, Ihre Schlüssel nicht mit einem Passwort zu schützen, und ich zeige Ihnen, wie Sie das Passwort nur gelegentlich 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 spezielles oben genanntes Serverbeispiel sieht der Befehl folgendermaßen aus:

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

Sie müssen das Kennwort für eingeben root@123.456.789.012, um diese Kopie auszuführen. Dies sollte jedoch das letzte Mal sein, dass Sie dies tun müssen. Angenommen, der Remote-Server sshdist für die Authentifizierung mit öffentlich-privaten Schlüsseln eingerichtet. Wenn Sie jetzt zur Box sshen, sollten Sie nicht nach einem Kennwort für das rootKonto gefragt werden, sondern nach dem Kennwort für Ihren Schlüssel . Lesen Sie weiter, wie Sie dies zu etwas machen, das Sie nicht die ganze Zeit eingeben müssen.

Wiederholen Sie den Vorgang für jeden Computer, auf den Sie statt eines Kennworts mit Ihren Schlüsseln zugreifen möchten.

Bitte beachten Sie, dass jeder , der Ihre ~/.ssh/id_rsaDatei in den Händen hält, auf dieses System zugreifen kann, rootohne ein Kennwort für das Remote-System einzugeben. Durch das Kennwort zum Schutz der Schlüsseldatei wird sichergestellt, dass das Kennwort bekannt sein muss, damit dieser Schlüssel verwendet werden kann. Stellen Sie sicher, dass die Datei sicher ist. Verwenden Sie die Festplattenverschlüsselung auf Ihrem Mac und behalten Sie die Berechtigungen für die Datei und das ~/.ssh/Verzeichnis bei.

Um die Verwendung des Schlüssels zu vereinfachen, ohne jedes Mal das Kennwort 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 nur gelegentlich Ihr Kennwort eingeben müssen. Wenn Sie Ihren Mac nur in den Ruhezustand versetzen, ihn niemals neu starten, können Sie längere Zeit ohne Eingabe Ihres Kennworts arbeiten.

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

ssh-add

Jetzt müssen Sie sich nur noch das Schlüsselkennwort merken , nicht mehr die vielen verschiedenen Kontokennwörter. Normalerweise behalte ich meine Schlüsselkennwörter in 1Password (keine Zugehörigkeit), um die Anzahl der Kennwörter, die ich mir merken muss, weiter zu vereinfachen. Dann schaue ich sie einfach in 1Password nach und füge sie in das Terminal ein, wenn ich meinen Mac neu starte und meine Ausführung ssh-agentneu starte.

Wenn Sie in dieser Frage das Kopieren Ihres Schlüssels auf Remotecomputer mit der Terminal.app-Verbindungsverwaltungslösung kombinieren , haben Sie eine ähnliche Erfahrung wie PuTTY für GUI-Verbindungen.


Ü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). Möglicherweise möchten Sie auch Folgendes festlegen:

PasswordAuthentication no

Während Sie dort sind, ist die kennwortbasierte 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 auf dem Mac Channel ein Stapelaustauschkonto eingerichtet , um zu prüfen, ob ich eine schnelle und einfache Möglichkeit finden kann, Anmeldeinformationen in Terminal oder auf dem Mac 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: <more>
tammy

<Forts.> Ich habe Befehlszeilenzugriff auf eine Reihe von Webservern (insgesamt 5). Ich habe in meinem Büro einen Desktop-PC mit SSH-Zugriff (über PuTTY) auf diese Webserver. Ich habe einen großen Laptop 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 besonderen Bedarf. Ich hatte gehofft, SSH-Verbindungen zu den Servern durch PuTTY und SuperPuTTY auf dem PC so einfach wie möglich zu machen. <mehr>
Tammy

<Forts.> Ich kann den öffentlichen Authentifizierungsschlüssel jedoch nicht verwenden, da ich die Funktionsweise von PuTTY auf meinen Heim- und Büro-PCs ändern müsste. Es ist zu anstrengend geworden, den Mac so zu machen, dass er wie mein PC funktioniert, und ich denke, ich muss mich nur noch an das Kopieren und Einfügen halten, um eine Verbindung von meinem Mac herzustellen. Danke für deine Hilfe. Ich weiß es sehr zu schätzen, dass Sie mir geholfen haben, meinen Prozess zu vereinfachen.
Tammy

2
Sie können @tammy PasswordAuthentication yesauf der Serverseite lassen und PuTTY funktioniert weiterhin so wie immer auf Ihrem Windows-Computer. Dies ist kein Entweder-Oder-Szenario. Sie können beide Authentifizierungstypen auf dem Server zulassen. PuTTY unterstützt auch die Autorisierung von öffentlichen / privaten Schlüsseln wie dieses FWIW. Sie können Ihre ~/.ssh/id_rsa*Dateien auf Ihren Windows-Computer kopieren und zur Authentifizierung auf dem Server in PuTTY importieren. PuTTY verwendet unter der Haube genau die gleichen OpenSSH-Bibliotheken für die Verbindung wie sshunter OS X.
Ian C.

1
ssh-addfunktioniert auch noch in Sierra (OS X 10.12). Danke
SaxDaddy

3

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

Folgen Sie den Anweisungen für die Installation von Mac OS X unter: https://gist.github.com/arunoda/7790979

Wenn du sshpass installiert hast laufe sshpass -p "YOUR_PASSWORD" ssh -o StrictHostKeyChecking=no root@123.456.789.012:2200

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


1
Ich fühle mich in dieser Sache viel zu dumm. Ich denke, mit einem PC mit PuTTY und SuperPuTTY habe ich mich zu weit von der Basisbefehlszeile entfernt. Ich habe mein OQ mit meinem Gesamtziel bearbeitet. Guck mal.
Tammy

Ich gehe jetzt davon aus, dass Sie mit root@123.456.789.012 verbunden werden können und nur den Prozess automatisieren möchten. Sie möchten grundsätzlich nicht jedes Mal tippen ssh -p 2200 root@123.456.789.012und Password: **********************?
Enzo

ssh-copy-idist nicht Teil der Standard-OS X-Distribution.
Ian C.

@ IanC. Ich glaube ich habe vergessen, dass ich es mit brew installiert habe. ändere meine Antwort
enzo

Du hast es geschafft @maetsoh - genau das möchte ich hier erreichen.
Tammy

1

Zusätzlich zu den öffentlichen / privaten Schlüsseln kann die .ssh / config-Datei so konfiguriert werden, dass die Verwendung von ssh-Befehlen wie Aliasnamen, Standardbenutzer / -port pro Server, ssh-Optionen, Proxy-Befehle usw. vereinfacht wird.

Grundsätzlich kann alles, was Sie mit einem ssh-Befehl komplizieren können, auch in dieser Datei enthalten sein.


0

Ich habe Putty als natives Anwendungspaket auf den Mac portiert, daher werden keine Macports oder Terminals benötigt, 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 Sie ein Produkt erwähnen, an dem Sie arbeiten, ist das in Ordnung. Versuchen Sie jedoch, ein Thema zu behandeln, anstatt dasselbe Marketing-Textblatt in mehrere Posts einzufügen.
bmike
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.