SSH ist ein Lebensretter, wenn Sie einen Computer aus der Ferne verwalten müssen, aber wussten Sie, dass Sie auch Dateien hochladen und herunterladen können? Mit SSH-Schlüsseln können Sie die Eingabe von Passwörtern überspringen und diese für Skripte verwenden!
Dieser Vorgang funktioniert unter Linux und Mac OS, vorausgesetzt, sie sind richtig für den SSH-Zugriff konfiguriert. Wenn Sie Windows verwenden, können Sie Cygwin verwenden, um Linux-ähnliche Funktionen zu erhalten, und mit ein wenig Optimierung wird auch SSH ausgeführt.
Kopieren von Dateien über SSH
Sicheres Kopieren ist ein wirklich nützlicher Befehl und sehr einfach zu verwenden. Das grundlegende Format des Befehls ist wie folgt:
scp [options] ursprüngliche_datei Zieldatei
Der größte Kicker ist, wie man den Remote-Teil formatiert. Wenn Sie eine Remote-Datei adressieren, müssen Sie dies wie folgt tun:
Benutzer@Server:Pfad/zu/Datei
Der Server kann eine URL oder eine IP-Adresse sein. Darauf folgt ein Doppelpunkt, dann der Pfad zu der betreffenden Datei oder dem betreffenden Ordner. Schauen wir uns ein Beispiel an.
scp –P 40050 Desktop/url.txt yatri@192.168.1.50:~/Desktop/url.txt
Dieser Befehl bietet die [-P] Flag (beachten Sie, dass es ein großes P ist). Dadurch kann ich statt der Standardnummer 22 eine Portnummer angeben. Dies ist für mich aufgrund der Art und Weise erforderlich, wie ich mein System konfiguriert habe.
Als nächstes ist meine Originaldatei „url.txt“, die sich in einem Verzeichnis namens „Desktop“ befindet. Die Zieldatei befindet sich in „~/Desktop/url.txt“, die mit „/user/yatri/Desktop/url.txt“ identisch ist. Dieser Befehl wird vom Benutzer „yatri“ auf dem Remote-Computer „192.168.1.50“ ausgeführt.
Was ist, wenn Sie das Gegenteil tun müssen? Auf ähnliche Weise können Sie Dateien von einem Remote-Server kopieren.
Hier habe ich eine Datei aus dem Ordner „~/Desktop/“ des Remote-Computers in den Ordner „Desktop“ meines Computers kopiert.
Um ganze Verzeichnisse zu kopieren, müssen Sie die [-r] Flag (beachten Sie, dass es ein kleines r ist).
Sie können auch Flaggen kombinieren. Anstatt von
scp –P –r …
Du kannst einfach tun
scp –Pr …
Das Schwierigste daran ist, dass die Tab-Vervollständigung nicht immer funktioniert, daher ist es hilfreich, ein anderes Terminal mit einer laufenden SSH-Sitzung zu haben, damit Sie wissen, wo Sie die Dinge ablegen müssen.
SSH und SCP ohne Passwörter
Sicheres Kopieren ist großartig. Sie können es in Skripte einfügen und Backups auf Remote-Computern erstellen lassen. Das Problem ist, dass Sie möglicherweise nicht immer in der Nähe sind, um das Kennwort einzugeben. Und seien wir ehrlich, es ist eine echte Qual, Ihr Passwort für einen Remote-Computer einzugeben, auf den Sie offensichtlich ständig Zugriff haben.
Nun, wir können mit Passwörtern umgehen, indem wir Schlüsseldateien verwenden, technisch PEM-Dateien genannt. Wir können den Computer zwei Schlüsseldateien generieren lassen – eine öffentliche, die zum Remote-Server gehört, und eine private, die sich auf Ihrem Computer befindet und sicher sein muss – und diese werden anstelle eines Passworts verwendet. Ziemlich bequem, oder?
Geben Sie auf Ihrem Computer den folgenden Befehl ein:
ssh-keygen –t rsa
Dadurch werden die beiden Schlüssel generiert und eingefügt:
~/.ssh/
mit den Namen „id_rsa“ für Ihren privaten Schlüssel und „id_rsa.pub“ für Ihren öffentlichen Schlüssel.
Nach Eingabe des Befehls werden Sie gefragt, wo der Schlüssel gespeichert werden soll. Sie können die Eingabetaste drücken, um die oben genannten Standardeinstellungen zu verwenden.
Als nächstes werden Sie aufgefordert, eine Passphrase einzugeben. Drücken Sie die Eingabetaste, um dieses Feld leer zu lassen, und wiederholen Sie es, wenn Sie zur Bestätigung aufgefordert werden. Der nächste Schritt besteht darin, die öffentliche Schlüsseldatei auf Ihren Remote-Computer zu kopieren. Sie können dazu scp verwenden:
Das Ziel für Ihren öffentlichen Schlüssel befindet sich auf dem Remote-Server in der folgenden Datei:
~/.ssh/authorized_keys2
Nachfolgende öffentliche Schlüssel können an diese Datei angehängt werden, ähnlich wie die Datei ~/.ssh/known_hosts. Das heißt, wenn Sie einen weiteren öffentlichen Schlüssel für Ihr Konto auf diesem Server hinzufügen möchten, kopieren Sie den Inhalt der zweiten Datei id_rsa.pub in eine neue Zeile in der vorhandenen Datei authorisiert_keys2.
Sicherheitsüberlegungen
Ist das nicht weniger sicher als ein Passwort?
Praktisch gesehen eher nicht. Der generierte private Schlüssel wird auf dem von Ihnen verwendeten Computer gespeichert und niemals übertragen, auch nicht zur Überprüfung. Dieser private Schlüssel stimmt NUR mit diesem EINEN öffentlichen Schlüssel überein, und die Verbindung muss von dem Computer aus gestartet werden, der den privaten Schlüssel hat. RSA ist ziemlich sicher und verwendet standardmäßig eine Länge von 2048 Bit.
Theoretisch ist es ziemlich ähnlich wie bei der Verwendung Ihres Passworts. Wenn jemand Ihr Passwort kennt, geht Ihre Sicherheit aus dem Fenster. Wenn jemand über Ihre private Schlüsseldatei verfügt, geht die Sicherheit für jeden Computer verloren, der über den passenden öffentlichen Schlüssel verfügt, aber er benötigt Zugriff auf Ihren Computer, um ihn zu erhalten.
Kann das sicherer sein?
Sie können ein Kennwort mit Schlüsseldateien kombinieren. Befolgen Sie die obigen Schritte, aber geben Sie eine starke Passphrase ein. Wenn Sie sich nun über SSH verbinden oder SCP verwenden, benötigen Sie die richtige private Schlüsseldatei und die richtige Passphrase.
Sobald Sie Ihre Passphrase einmal eingegeben haben, werden Sie nicht erneut danach gefragt, bis Sie Ihre Sitzung schließen. Das bedeutet, dass Sie beim ersten SSH/SCP-Vorgang Ihr Passwort eingeben müssen, aber für alle nachfolgenden Aktionen ist es nicht erforderlich. Sobald Sie sich von Ihrem Computer (nicht dem entfernten) abmelden oder Ihr Terminalfenster schließen, müssen Sie es erneut eingeben. Auf diese Weise opfern Sie nicht wirklich die Sicherheit, aber Sie werden auch nicht ständig nach Passwörtern belästigt.
Kann ich das öffentliche/private Schlüsselpaar wiederverwenden?
Das ist eine wirklich schlechte Idee. Wenn jemand Ihr Passwort findet und Sie dasselbe Passwort für alle Ihre Konten verwenden, hat er jetzt Zugriff auf alle diese Konten. Ebenso ist Ihre private Schlüsseldatei auch supergeheim und wichtig. (Weitere Informationen finden Sie unter Wiederherstellen nach Kompromittierung Ihres E-Mail-Passworts)
Am besten erstellen Sie für jeden Computer und jedes Konto, das Sie verknüpfen möchten, neue Schlüsselpaare. Auf diese Weise kompromittieren Sie nur ein Konto auf einem Remote-Computer, wenn einer Ihrer privaten Schlüssel irgendwie abgefangen wird.
Es ist auch sehr wichtig zu beachten, dass alle Ihre privaten Schlüssel am selben Ort gespeichert sind: in ~/.ssh/ auf Ihrem Computer können Sie TrueCrypt verwenden, um einen sicheren, verschlüsselten Container zu erstellen, und dann symbolische Links in Ihrer ~/.ssh . erstellen / Verzeichnis. Je nachdem, was ich tue, verwende ich diese superparanoide supersichere Methode, um mich zu beruhigen.
Haben Sie SCP in irgendwelchen Skripten verwendet? Verwenden Sie Schlüsseldateien anstelle von Passwörtern? Teile deine eigene Expertise mit anderen Lesern in den Kommentaren!