Ich arbeite mit einem Mac Book Pro (genannt foo). Ich habe einen Server, auf dem meine Kunden große Dateien scp. (Bar genannt). Ich ssh häufig in die Leiste und scp eine Datei (genannt Buzz) auf meinen Mac.
bob@foo$ ssh bar
Last login: Fri Aug 23 14:49:32 2013 from foo
bob@bar$ scp /guest/buzz bob@foo:~
Password:
Ich möchte mein Passwort nicht jedes Mal eingeben, wenn ich eine Datei auf meinen Mac zurückschicke, da ich dies schließlich automatisieren werde.
Ich weiß, dass ich SSH-Schlüssel einrichten könnte , aber ich bin besorgt, dass jemand, der hackt bar
, leicht darauf zugreifen kann foo
. (Korrigieren Sie mich, wenn ich falsch liege)
Gibt es eine Möglichkeit, eine Datei ohne Kennwort von bar nach foo zu kopieren, ohne dass jemand vollen Shell-Zugriff auf meinen Mac erhält, wenn der Server kompromittiert wird?
Hinweis: Ich denke, dass das Einrichten eines neuen Benutzers auf meinem Mac und das Deaktivieren des Shell-Zugriffs für diesen Benutzer möglicherweise funktioniert, aber ich denke, es gibt einen besseren Weg. Ich möchte lieber keine Benutzer hinzufügen, wenn dies möglich ist.
scp bar:file .
Antworten:
Ok, du hast alles durcheinander gebracht.
Soweit ich verstanden habe, möchten Sie nur eine Datei von bar nach foo kopieren :
Um genau das zu tun, müssen Sie zuerst
ssh
auf die Bar dannscp
Datei foo :dann:
Wenn Sie so vorgehen, tun Sie es unsicher und falsch . Alles, was Sie tun müssen, ist, die Datei direkt an Sie zurückzusenden:
mit anderen Worten:
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: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
(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:
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.
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 , dassid_rsa.pub
auf umbenannt wurdepub_cert
in dem Prozess. Früher habe ichsftp
nur zu zeigen , dass es genau so verwendet werden kannscp
).Jetzt kopieren wir dieses Zertifikat an den richtigen Ort:
Jetzt befinden Sie sich in Bobs persönlichem Ordner in der Leiste .
(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
undssh
wird nicht mehr funktionieren, abersftp
Filezilla und so werden funktionieren.ref: https://www.allthingsdigital.nl/2013/05/12/setting-up-an-sftp-only-account-with-openssh/
quelle
Wenn Sie sich das Format der
authorized_keys
Datei ansehen , werden Sie feststellen, dass Sie den Befehl einschränken können, der mit einem bestimmten Schlüssel verwendet werden darf. Dies ist die Methode, die ich zuvor verwendet habe, umscp
in diesem Fall SSH-Aktionen mit einem angegebenen Schlüssel nur für einen bestimmten Befehl zuzulassen . Schauen Sie sich die Manpage mit anman authorized_keys
.quelle
Vielleicht möchten Sie sich https://github.com/scponly/scponly/wiki/Download ansehen, oder Sie können Ihren Benutzer darauf beschränken,
sftp
nur so zu mögen ...quelle
Wie andere würde ich vorschlagen, dass Sie direkt von Ihrem anderen Computer kopieren:
Wenn Sie aus irgendeinem Grund die Kopie von der Leiste aus starten möchten, können Sie ein ssh-Schlüsselpaar auf foo erstellen, mit dem sich foo bei foo anmelden kann. Anschließend können Sie den ssh-Agenten verwenden, um den Schlüssel über dieselbe Verbindung weiterzuleiten.
Sie können den öffentlichen Schlüssel auch in die Leiste kopieren, dann wird keine Kennwortabfrage angezeigt, oder Sie fügen dem Schlüssel eine Passphrase hinzu. Geben Sie diese ein, wenn Sie in die Leiste gehen, und benötigen Sie sie aufgrund des SSH-Agenten nicht es für die Verbindung umgekehrt und dabei sicher.
quelle