So kopieren Sie Dateien über SSH aus der Ferne, ohne dass Sie Ihr Kennwort eingeben müssen
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 Skripts verwenden!
Dieser Vorgang 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. Mit ein paar Änderungen wird auch SSH ausgeführt.
Dateien über SSH kopieren
Sicheres Kopieren ist ein sehr nützlicher Befehl und sehr einfach zu bedienen. Das grundlegende Format des Befehls lautet wie folgt:
scp [Optionen] ursprüngliche_Datei Zieldatei
Der größte Kicker ist das Formatieren des Remote-Teils. Wenn Sie eine Remote-Datei adressieren, müssen Sie dies auf folgende Weise tun:
Benutzer @ Server: Pfad / zu / Datei
Der Server kann eine URL oder eine IP-Adresse sein. Es folgt ein Doppelpunkt und dann der Pfad zu der betreffenden Datei oder dem 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ßes P handelt). Dadurch kann ich anstelle der Standardnummer 22 eine Portnummer angeben. Dies ist für mich aufgrund der Art der Konfiguration meines Systems erforderlich.
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 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? Sie können Dateien auf ähnliche Weise 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 das [-r] -Flag verwenden (beachten Sie, dass es sich um ein Kleinbuchstabe r handelt)..
Sie können auch Flaggen kombinieren. Anstatt
scp -P -r…
Du kannst es einfach tun
scp -Pr…
Das Schwierigste dabei ist, dass die Tab-Vervollständigung nicht immer funktioniert. Es ist daher hilfreich, ein anderes Terminal mit einer SSH-Sitzung auszuführen, damit Sie wissen, wo Sie etwas ablegen müssen.
SSH und SCP ohne Passwörter
Sicheres Kopieren ist großartig. Sie können es in Skripts einfügen und Sicherungskopien auf Remote-Computern erstellen. Das Problem ist, dass Sie möglicherweise nicht immer das Passwort eingeben müssen. Um ehrlich zu sein, ist es ein großer Schmerz, wenn Sie Ihr Kennwort auf einem Remote-Computer eingeben, auf den Sie offenbar jederzeit Zugriff haben.
Nun, wir können mit Kennwörtern umgehen, indem Sie Schlüsseldateien verwenden. Der Computer kann zwei Schlüsseldateien erzeugen - eine öffentliche, die auf dem Remote-Server gehört, und eine private, die sich auf Ihrem Computer befindet und sicher sein muss - und diese werden anstelle eines Kennworts verwendet. Ziemlich bequem, richtig?
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 der 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. Im nächsten Schritt kopieren Sie die Datei mit den öffentlichen Schlüsseln auf Ihren Remote-Computer. Sie können scp dazu verwenden:
Das Ziel für Ihren öffentlichen Schlüssel befindet sich auf dem Remote-Server in der folgenden Datei:
~ / .ssh / authorised_keys2
Nachfolgende öffentliche Schlüssel können an diese Datei angehängt werden, ähnlich wie die Datei ~ / .ssh / known_hosts. Das bedeutet, wenn Sie einen weiteren öffentlichen Schlüssel für Ihr Konto auf diesem Server hinzufügen möchten, würden Sie den Inhalt der zweiten id_rsa.pub-Datei in eine neue Zeile in der vorhandenen berechtigten_keys2-Datei kopieren.
Sicherheitsüberlegungen
Ist das nicht weniger sicher als ein Passwort?
Praktisch nicht wirklich. Der erzeugte private Schlüssel wird auf dem Computer gespeichert, den Sie verwenden, und er wird niemals übertragen, auch nicht verifiziert. Dieser private Schlüssel stimmt NUR mit diesem EINEN öffentlichen Schlüssel überein, und die Verbindung muss von dem Computer aus gestartet werden, auf dem sich der private Schlüssel befindet. RSA ist ziemlich sicher und verwendet standardmäßig eine Länge von 2048 Bit.
Theoretisch ähnelt es der Verwendung Ihres Passworts. Wenn jemand Ihr Passwort kennt, wird Ihre Sicherheit aus dem Fenster gelöscht. Wenn jemand über Ihre private Schlüsseldatei verfügt, geht die Sicherheit für jeden Computer verloren, auf dem sich der öffentliche Schlüssel befindet, der Zugriff auf Ihren Computer ist jedoch erforderlich.
Kann das sicherer sein??
Sie können ein Passwort mit Schlüsseldateien kombinieren. Führen Sie die oben genannten Schritte aus, geben Sie jedoch eine starke Passphrase ein. Wenn Sie nun über SSH eine Verbindung herstellen oder SCP verwenden, benötigen Sie die richtige private Schlüsseldatei ebenso gut wie die richtige Passphrase.
Wenn Sie Ihre Passphrase einmal eingegeben haben, werden Sie erst wieder danach gefragt, wenn Sie Ihre Sitzung beenden. Das bedeutet, dass Sie das erste Mal, wenn Sie SSH / SCP verwenden, Ihr Kennwort eingeben müssen, aber für alle nachfolgenden Aktionen ist es nicht erforderlich. Wenn Sie sich von Ihrem Computer abmelden (nicht dem entfernten) oder Ihr Terminalfenster schließen, müssen Sie es erneut aufrufen. Auf diese Weise opfern Sie die Sicherheit nicht wirklich, aber Sie werden auch nicht ständig für Passwörter belästigt.
Kann ich das öffentliche / private Schlüsselpaar wiederverwenden??
Das ist eine wirklich schlechte Idee. Wenn jemand Ihr Kennwort findet und Sie dasselbe Kennwort für alle Ihre Konten verwenden, hat der Benutzer nun Zugriff auf alle diese Konten. Ebenso ist Ihre private Schlüsseldatei auch äußerst geheim und wichtig. (Weitere Informationen finden Sie unter So erholen Sie sich, nachdem Ihr E-Mail-Passwort beeinträchtigt wurde.)
Es empfiehlt sich, für jeden Computer und jedes Konto, das Sie verknüpfen möchten, neue Schlüsselpaare zu erstellen. Auf diese Weise können Sie, wenn einer Ihrer privaten Schlüssel auf irgendeine Weise erfasst wird, nur ein Konto auf einem Remotecomputer gefährden.
Beachten Sie auch, 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 in Ihrer ~ / .ssh Symlinks erstellen / Verzeichnis. Je nachdem, was ich tue, verwende ich diese superparanoide, extrem sichere Methode, um mich zu beruhigen.
Haben Sie SCP in Skripten verwendet? Verwenden Sie Schlüsseldateien anstelle von Passwörtern? Teilen Sie Ihre eigenen Erfahrungen mit anderen Lesern in den Kommentaren!