6Aug
SSH ist ein Lebensretter, wenn Sie einen Computer remote 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 Prozess funktioniert unter Linux und Mac OS, vorausgesetzt, sie sind ordnungsgemäß 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 Feinabstimmung wird auch SSH ausgeführt.
Kopieren von Dateien über SSH
Sichere Kopie ist ein wirklich nützlicher Befehl, und es ist wirklich einfach zu bedienen. Das grundlegende Format des Befehls lautet wie folgt:
scp [Optionen] Original_Datei Zieldatei
Der größte Kicker ist die Formatierung des Remote-Teils. Wenn Sie eine Remote-Datei adressieren, müssen Sie dies folgendermaßen tun:
Benutzer @ Server: Pfad /to/-Datei
Der Server kann eine URL oder eine IP-Adresse sein. Darauf folgt ein Doppelpunkt und dann der Pfad zu der betreffenden Datei oder dem betreffenden Ordner. Schauen wir uns ein Beispiel an.
scp -P 40050 Desktop / url.txt [email protected]: ~ /Desktop/ url.txt
Dieser Befehl enthält das Flag [-P]( beachten Sie, dass es sich um ein Großbuchstabe P handelt).Dadurch kann ich anstelle der Standard 22 eine Portnummer angeben. Dies ist für mich notwendig, weil 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", was der "/user/yatri/Desktop/ url.txt" entspricht. Dieser Befehl wird vom Benutzer "yatri" auf dem Remote-Computer "192.168.1.50" ausgeführt.
Was, wenn Sie das Gegenteil tun müssen? Sie können Dateien ähnlich von einem Remote-Server kopieren.
Hier habe ich eine Datei vom "~ /Desktop/" -Ordner des Remote-Computers in den "Desktop" -Ordner meines Computers kopiert.
Um ganze Verzeichnisse zu kopieren, müssen Sie das Flag [-r] verwenden( beachten Sie, dass es sich um einen Kleinbuchstaben r handelt).
Sie können auch Flags kombinieren. Anstelle von
scp -P -r. ..
Sie können einfach
scp -Pr. ..
Der schwierigste Teil hier ist, dass die Tab-Vervollständigung nicht immer funktioniert, so ist es hilfreich, ein anderes Terminal mit einer SSH-Sitzung laufen zu lassen, so dass Sie wissenwo man Dinge hinstellt.
SSH und SCP ohne Passwörter
Sicheres Kopieren ist großartig. Sie können sie in Skripts einfügen und sie auf entfernten Computern sichern lassen. Das Problem ist, dass Sie nicht immer in der Nähe sind, um das Passwort einzugeben. Und, lasst uns ehrlich sein, es ist ein großer Schmerz, dein Passwort in einen Remote-Computer zu legen, auf den du offensichtlich jederzeit Zugriff hast.
Nun, wir können umgehen mit Passwörtern mit Schlüsseldateien. Wir können den Computer veranlassen, zwei Schlüsseldateien zu generieren - eine öffentliche, die auf dem entfernten Server gehört, und eine private, die sich auf Ihrem Computer befindet und sicher sein muss - und diese werden anstelle eines Passworts verwendet. Ziemlich praktisch, oder?
Geben Sie auf Ihrem Computer den folgenden Befehl ein:
ssh-keygen -t rsa
Dadurch werden die zwei Schlüssel generiert und in
~ /.ssh/
mit den Namen "id_rsa" für Ihren privaten Schlüssel und "id_rsa.pub" fürIhr öffentlicher 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 das Feld leer zu lassen, und wiederholen Sie die Aktion, wenn Sie zur Bestätigung aufgefordert werden. Der nächste Schritt besteht darin, die öffentliche Schlüsseldatei auf Ihren Remote-Computer zu kopieren. Dazu können Sie 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. Wenn Sie also 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 der vorhandenen Datei authorized_keys2.
Sicherheitsaspekte
Ist das nicht weniger sicher als ein Passwort?
In einem praktischen Sinn, nicht wirklich. Der generierte private Schlüssel wird auf dem Computer gespeichert, den Sie verwenden, und er wird niemals übertragen, auch nicht um verifiziert zu werden. Dieser private Schlüssel entspricht NUR diesem öffentlichen Schlüssel, und die Verbindung muss von dem Computer mit dem privaten Schlüssel gestartet werden. RSA ist ziemlich sicher und verwendet standardmäßig eine Länge von 2048 Bit.
In der Theorie ist es theoretisch ziemlich ähnlich mit 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 entsprechenden öffentlichen Schlüssel verfügt. Sie benötigen jedoch Zugriff auf Ihren Computer, um sie zu erhalten.
Kann das sicherer sein?
Sie können ein Passwort mit Schlüsseldateien kombinieren. Befolgen Sie die obigen Schritte, aber geben Sie eine starke Passphrase ein. Wenn Sie nun eine Verbindung über SSH herstellen oder SCP verwenden, benötigen Sie die richtige private Schlüsseldatei sowie 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 bei der ersten Verwendung von SSH / SCP Ihr Passwort eingeben müssen, aber bei allen nachfolgenden Aktionen ist dies nicht erforderlich. Sobald Sie sich von Ihrem Computer abgemeldet haben( nicht vom entfernten) oder das 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, haben Sie jetzt Zugriff auf alle diese Konten. In ähnlicher Weise ist Ihre private Schlüsseldatei auch sehr geheim und wichtig.(Weitere Informationen finden Sie unter Wiederherstellen, nachdem Ihr E-Mail-Kennwort beschädigt wurde.)
Erstellen Sie am besten neue Schlüsselpaare für jeden Computer und jedes Konto, die Sie verknüpfen möchten. Auf diese Weise werden Sie nur einen Account auf einem Remote-Computer kompromittieren, wenn einer Ihrer privaten Schlüssel irgendwie gefangen wird.
Es ist auch wichtig zu beachten, dass alle privaten Schlüssel an derselben Stelle gespeichert sind: In ~ /.ssh/ auf Ihrem Computer können Sie TrueCrypt verwenden, um einen sicheren, verschlüsselten Container zu erstellen, und dann Symlinks in Ihrem ~ /.ssh/-Verzeichnis erstellen. Je nachdem, was ich mache, benutze ich diese super-paranoide Super-sichere Methode, um mich zu beruhigen.
Haben Sie SCP in Skripten verwendet? Verwenden Sie Schlüsseldateien anstelle von Kennwörtern? Teile deine eigenen Erfahrungen mit anderen Lesern in den Kommentaren!