Ok, du hast alles durcheinander gebracht.
Soweit ich verstanden habe, möchten Sie nur eine Datei von bar nach foo kopieren :
[file] *bar* ------copy------> *foo*
Um genau das zu tun, müssen Sie zuerst ssh
auf die Bar dann scp
Datei foo :
*bar* -------ssh------> *foo* [file]
dann:
*foo* ----scp[file]---> *bar*
Wenn Sie so vorgehen, tun Sie es unsicher und falsch . Alles, was Sie tun müssen, ist, die Datei direkt an Sie zurückzusenden:
bob@foo$ scp bob@bar:/guest/buzz ~
mit anderen Worten:
*foo* <---scp[file]---- *bar*
Jetzt müssen einige Probleme gelöst werden…
Woher wissen, wo sich die Datei befindet?
a) Verwenden Sie SSH in einem anderen Terminal
Öffnen Sie einfach ein zweites Terminal, SSH , um zu sperren , suchen Sie Ihre Datei und kopieren Sie den Pfad zum ersten.
b) Verwenden Sie SFTP
SFTP (in keiner Weise mit FTP oder FTPS verbunden!) Ist in OpenSSH implementiert und standardmäßig verfügbar. Einfach SFTP zum Server und verwenden Sie die FTP-ähnlichen Befehle, um Ihre Dateien und get
diese zu finden .
c) Verwenden Sie eine GUI
Filezilla oder Nautilus können beispielsweise entfernte SFTP / SSH-Freigaben durchsuchen.
d) Richten Sie Zertifikate ein
Wenn Sie eine Zertifikatverbindung einrichten, können Sie die Registerkarte sowohl auf der lokalen Seite als auch auf der Remote-Seite vervollständigen! Mit Ihrem buzz
Beispiel können Sie beispielsweise Folgendes tun:
bob@foo$ scp bob@bar:/guest/[tab][tab]
und warten Sie ein wenig auf die Liste der Dateien im Ordner remote / guest /.
Wie richte ich SSH mit Zertifikaten ein?
a) Falls noch nicht geschehen, generieren Sie Ihr persönliches RSA-Schlüsselpaar
Wenn Sie den OpenSSH-Client installiert haben, können Sie dies durch Eingabe tun
bob@foo$ ssh-keygen -t rsa
(Alle verfügbaren Optionen finden Sie im Handbuch oder online.) Möglicherweise werden Sie nach einem Passwort gefragt. Dies ist nicht das Kennwort Ihres lokalen Kontos, sondern ein optionales Kennwort, mit dem Sie den zu generierenden privaten Schlüssel verschlüsseln können .
Eigentlich werden Sie 2 Dateien generieren:
- /Users/[yourusername‹/.ssh/id_rsa
- /Users/[yourusername‹/.ssh/id_rsa.pub
Der erste, * id_rsa *, sollte privat sein . Standardmäßig ssh-keygen
wird alles getan, um eine Veröffentlichung zu vermeiden (mithilfe der Zugriffsberechtigung für das Dateisystem). Aus diesem Grund werden Sie auch nach einem (optionalen) Passwort gefragt. Sei damit nicht zu paranoid, aber erinnere dich einfach an * id_rsa * == persönlicher Schlüssel == privat . Dieser Schlüssel sollte niemals Ihren Computer verlassen.
Der zweite ist öffentlich. Es erfordert eine enorme Menge an Computerleistung, um Ihren privaten Schlüssel von diesem öffentlichen Zertifikat zurückzugewinnen (ich meine wirklich HUUUUUUGE). Dies ist absolut sicher, um es mit der ganzen Welt zu teilen. Selbst in dem sehr unwahrscheinlichen Fall, dass die NSA oder dergleichen wirklich Millionen von Dollar ausgeben möchten, um Ihren öffentlichen Schlüssel zu knacken, ist Ihr MacBook immer noch sicher… (oder auch nicht. Wenn jemand so viel ausgeben möchte, sind Sie dabei Ärger :)
Dieses öffentliche Zertifikat wird tatsächlich in die Remote-Serverleiste eingefügt .
b) Wie stelle ich mein öffentliches Zertifikat auf den Server?
Zwei Optionen.
- Verwenden Sie,
ssh-copy-id
falls verfügbar : bob@foo$ ssh-copy-id bob@bar
. Erledigt.
Wenn dies nicht der Fall ist , kopieren Sie ~/.ssh/id_rsa.pub
in den Balken :
bob @ foo $ sftp ~ / .ssh / id_rsa.pub bob @ bar: pub_cert
(hier kopiert Sie Ihr öffentliches Zertifikat id_rsa.pub
aus .ssh/
, in Ihrem persönlichen ~
Ordner auf die Remote - Computer - Bar im Home - Ordnern des Benutzers bob . Dies ist die Standardeinstellung. Beachten Sie auch , dass id_rsa.pub
auf umbenannt wurde pub_cert
in dem Prozess. Früher habe ich sftp
nur zu zeigen , dass es genau so verwendet werden kann scp
).
Jetzt kopieren wir dieses Zertifikat an den richtigen Ort:
bob@foo$ ssh bob@bar
Jetzt befinden Sie sich in Bobs persönlichem Ordner in der Leiste .
bob@bar$ cat pub_cert >> .ssh/known_hosts
(Hier haben Sie den Inhalt von pub_cert mit angezeigt cat
. Anstatt ihn auf dem Bildschirm auszudrucken , leiten Sie diese Ausgabe in eine Datei um : .ssh/known_hosts
. Beachten Sie, dass eine Umleitung mit >
"den Inhalt der Datei durch diesen Stream ersetzen" >>
bedeutet, während "bedeutet". Hängen Sie den Stream am Ende der vorhandenen Datei an ").
c) Ergebnis?
Jetzt können Sie scp
/ sftp
/ Bar so viel wie Sie wollen , ohne ein Passwort zu schaffen. Sie können lokale und entfernte Pfade auch automatisch mit der Taste [Tab] vervollständigen.ssh
d) Was ist mit meiner Mac-Sicherheit?
Auf diese Weise benötigen Sie nicht einmal einen laufenden SSH-Server auf Ihrem Computer. Nur ein SSH-Client (die scp
/ sftp
/ ssh
Programme). Dies ist sicher für Sie, auch wenn die Stange beeinträchtigt ist.
e) Was habe ich genau mit diesen Schlüsseln / Zertifikaten gemacht?
Zuerst haben Sie einige Dateien generiert: einen privaten Schlüssel und ein öffentliches Zertifikat. Mit ihnen können Sie viele Dinge im Zusammenhang mit Sicherheit und Authentifizierung tun. In unserem Fall werden diese jedoch mit ein wenig Vereinfachung folgendermaßen verwendet:
Wenn Sie versuchen, eine Verbindung zur Leiste herzustellen, geben Sie an, dass Sie über ein Zertifikat verfügen, das Sie für die Verbindung verwenden können.
Die Leiste überprüft verschiedene Stellen im System, einschließlich ~/.ssh/known_hosts
. Es findet das von Ihnen angekündigte Zertifikat und verwendet es, um Ihnen verschlüsselte Daten zu senden.
Tatsächlich können öffentliche Zertifikate Sachen verschlüsseln!
Das ist großartig, aber wie kann foo das verstehen? Verwenden Sie Ihren privaten Schlüssel.
Private Schlüssel können mit dem entsprechenden öffentlichen Zertifikat verschlüsselte Inhalte entschlüsseln!
Dies wird als asymmetrische Verschlüsselung bezeichnet.
Im Grunde sendet der Server dann ein kompliziertes Passwort an Sie, das mit Ihrem öffentlichen Zertifikat verschlüsselt ist. Sie erhalten es, entschlüsseln es mit Ihrem privaten Schlüssel und beginnen damit, Daten mit dem Server in beide Richtungen zu verschlüsseln.
Was ist, wenn Sie wirklich wirklich die Dinge auf Ihre Weise und SCP zurück zu foo tun wollen ?
Sie fragen nur nach Problemen. Um die Auswirkungen einer möglichen Kompromittierung abzuschwächen, können Sie einen SFTP
Server einrichten, der nur Chroots enthält. scp
und ssh
wird nicht mehr funktionieren, aber sftp
Filezilla und so werden funktionieren.
ref: https://www.allthingsdigital.nl/2013/05/12/setting-up-an-sftp-only-account-with-openssh/