Einrichten und Überprüfen von SFTP mit Authentifizierung mit öffentlichem Schlüssel auf Clients und Servern
Umwelt
- Fenster
-
- Windows 10 Pro
- Windows Server 2019
- Windows 7
- Windows Server 2012 R2
- OpenSSH
-
- 7,7p1
- 8.1p1 - Beta
※ Es funktioniert in anderen Versionen, ist aber unbestätigt
Zuerst
Beim letzten Mal haben Sie einen SFTP-Server eingerichtet, um zu überprüfen, ob die Kennwortauthentifizierung das Senden und Empfangen von Dateien ermöglicht. Diesmal sendet und empfängt sftp Dateien mithilfe der Authentifizierung mit öffentlichem Schlüssel.
Vorbereitung im Vorfeld
- Auf dem Client ist ein OpenSSH-Client installiert
- Auf dem Server ist ein OpenSSH-Server installiert.
- Der Server startet den OpenSSH-Dienst und der Port 22 wird frei.
Erstellen von privaten und öffentlichen Schlüsseln im Client
Melden Sie sich beim Client an. Private und öffentliche Schlüssel können auch auf der Serverseite erstellt werden, aber der private Schlüssel ist der Client und der öffentliche Schlüssel wird vom Server gehalten. Erstellen Sie auf der Clientseite.
Starten Sie PowerShell mit Administratorrechten.
Erstellen Sie eine Datei, wechseln Sie mit dem Befehl cd zu einem beliebigen Ordner, und geben Sie den folgenden Befehl ein:
ssh-keygen -t rsa -f id_rsa
Sie können eine Passphrase (Passwort) in den Schlüssel eingeben, also geben Sie sie bitte bei Bedarf ein.
Wenn der Schlüssel erfolgreich generiert wurde, werden der öffentliche und der private Schlüssel wie folgt im Ordner erstellt: "id_rsa" ist der private Schlüssel und "id_rsa.pub" ist der öffentliche Schlüssel.
Platzieren eines öffentlichen Schlüssels auf dem Server
Melden Sie sich bei Windows mit Ihrem SFTP-Konto für den Server an.
Bitte legen Sie den erstellten öffentlichen Schlüssel "id_rsa.pub" im folgenden Ordner auf dem Server ab. 「. Wenn Sie keinen "ssh" -Ordner haben, erstellen Sie bitte einen. Ändern Sie auch den Dateinamen in "authorized_keys". (Ersetzen Sie die <> durch den Benutzernamen, mit dem Sie sich mit SFTP anmelden.)
- C:\Benutzer\< Benutzername>\.ssh
Beachten Sie, dass nur Benutzer mit "Administratoren" oder SFTP-Benutzern Zugriff auf diese Datei haben sollten. Sftp-Verbindungen schlagen immer fehl, wenn andere Benutzer Zugriff haben. Beispielsweise hat NG eine Gruppe von Benutzern oder Jeder an die Berechtigung angehängt.
In diesem Beispiel ". Die Zugriffsrechte des Ordners "ssh" sind "Group:SYSTEM", "Group: Administrators" und "User: sftptest". Wenn Sie eine Berechtigung nicht entfernen können, deaktivieren Sie die Berechtigungsvererbung.
Aktivieren der Authentifizierung mit öffentlichen Schlüsseln auf dem Server
Melden Sie sich beim Server mit Administratorberechtigungen an, und öffnen Sie dann die folgenden Ordner:
- C:\ProgramData\ssh
Da es eine Datei namens "sshd_config" gibt, kopieren Sie sie und ändern Sie den Dateinamen in "sshd_config_default" und richten Sie ein Backup ein.
Öffnen Sie "sshd_config" im texteditor, der mit Administratorrechten gestartet wurde.
Um die Authentifizierung mit öffentlichem Schlüssel zu aktivieren, ändern Sie sie wie folgt:
#PubkeyAuthentication yes
↓↓↓
PubkeyAuthentication yes
Außerdem ist die Kennwortauthentifizierung standardmäßig aktiviert, wenn Sie sie also deaktivieren möchten, ändern Sie sie wie folgt.
#PasswordAuthentication yes
↓↓↓
PasswordAuthentication no
Ich möchte für jedes SFTP-Konto einen öffentlichen Schlüssel platzieren, daher werde ich die folgende Zeile auskommentieren:
Match Group administrators
AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
↓↓↓
#Match Group administrators
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
Wenn Sie das Stammverzeichnis für jedes SFTP-Konto angeben möchten, fügen Sie die folgende Zeile hinzu: Je nachdem, ob Sie dies angeben oder nicht, kann es beim Angeben eines Ordnerpfads vom Client in das Format "C:\xxxxx" oder "/xxxxx" wechseln.
Match User <ユーザー名>
ChrootDirectory <フォルダパス>
Beispiel
Match User TestUser
ChrootDirectory C:\Users\TestUser
Nachdem Sie sshd_config gespeichert haben, starten Sie den OpenSSH-Server neu.
Senden und Empfangen von Dateien von Clients mit Authentifizierung mit öffentlichem Schlüssel
Platzieren Sie den privaten Schlüssel "id_rsa", den Sie vor der Verbindung mit SFTP erstellt haben, in einem Ordner, auf den nur der Benutzer zugreifen kann, der SFTP ausführt. Beachten Sie, dass SFTP-Verbindungen fehlschlagen, wenn sie in einem Ordner abgelegt werden, auf den andere Benutzer zugreifen können. Insbesondere wenn der Ordner über Berechtigungen für die Gruppen Benutzer und Jeder verfügt, handelt es sich um NG.
Grundsätzlich wird es empfohlen, da es automatisch auf den Pfad verweist, wenn Sie es im folgenden Ordner ablegen.
- C:\Benutzer\< Benutzername>\.ssh
Kunden". Die Zugriffsrechte des Ordners "ssh" sind "Group:SYSTEM", "Group: Administrators", "User: < Login user >".
Wenn Sie mit dem privaten Schlüssel auf sftp zugreifen möchten, geben Sie den folgenden Befehl ein (ersetzen Sie die <>): Wenn Sie eine Passphrase eingerichtet haben, geben Sie auch eine Passphrase ein.
sftp -i id_rsa <ユーザー名>@<サーバー名>
Wenn Sie sich erfolgreich anmelden, werden Sie auf die Anzeige des angemeldeten Benutzers umgestellt.
Sie können auch überprüfen, ob Sie sich mit dem Befehl dir anmelden können.
Nachdem Sie nun eine Datei mit dem Namen "test3.txt" vorbereitet haben, senden Sie die Datei mit dem Befehl put.
put c:\temp\test3.txt
Wenn Sie sich den serverseitigen Ordner C:\Users\sftptest ansehen, können Sie sehen, dass die Datei test3.txt gesendet wird.
Versuchen Sie, vom Client zu erhalten.
get test3.txt c:\temp\test4.txt
Ich konnte bestätigen, dass die Datei erhalten werden konnte.
Zusammenfassung
Sie konnten Dateien über SFTP mithilfe der Authentifizierung mit öffentlichem Schlüssel senden und empfangen. Durch die Verwendung eines öffentlichen Schlüssels kann die Serverseite das Kennwort nicht kennen. Es ermöglicht Ihnen, Dateien sicherer als die Kennwortauthentifizierung auszutauschen.