Wenn ich einen SFTP-Server von einem Client aus anschließe, muss ich der Client-Software nur den privaten Schlüssel und nicht den öffentlichen Schlüssel bereitstellen. Ich weiß nicht, wie das funktioniert, denn von [1] und [2] verlangen beide, dass die Client-Software auch den öffentlichen Schlüssel kennt.Warum muss SFTP-Client nur den privaten Schlüssel kennen, benötigt keinen öffentlichen Schlüssel?
Mein Verständnis davon, wie SFTP Arbeit ist
Setup
Client: private/öffentliche Schlüsselpaare erzeugen.
Client: public Schlüssel zum Server
Server senden: Fügen Sie diesen öffentlichen Schlüssel an seine autorisierten Schlüsseln Liste
während der Verbindung
Client: tell Server der Öffentlichkeit Schlüssel
Server: chec k, wenn der öffentliche Schlüssel autorisiert ist, wenn nicht, sich weigern, andernfalls
Client eine zufällige Session-ID an den Client senden: Client verwenden private Schlüssel zum Codieren der Zufalls Session-ID und
Server zu Server senden: dekodiere es mit dem öffentlichen Schlüssel und bestätige die Identität.
In diesem Fall benötigt der Client einen öffentlichen Schlüssel. Allerdings habe ich dies nicht zur Verfügung gestellt, aber der SFTP-Client ist immer noch in der Lage, den Server zu verbinden. Wie funktioniert dieses SFTP-Protokoll wirklich?
[1] http://www.openssh.org/txt/rfc4252.txt
[2] https://www.eldos.com/security/articles/1962.php
Der Client berechnete den öffentlichen Schlüssel aus dem privaten Schlüssel. –
danke! Das erklärt alles. auch, eine Randnotiz, kann ich den öffentlichen Schlüssel durch "ssh-keygen -y" erhalten, um den öffentlichen Schlüssel aus dem privaten Schlüssel (wie ich OpenSSH verwenden) – macsyz
Es ist so erfrischend, eine tatsächliche * Frage * anstelle von "meine zu sehen code funktioniert nicht plz help ", ich werde ein upvote für genau das –