Einrichten und Überprüfen von SFTP mit Authentifizierung mit öffentlichem Schlüssel auf Clients und Servern

Erstellungsdatum der Seite :

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.

image

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.

image

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.

image

image

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

image

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.

image

Ö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.

image

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 <ユーザー名>@<サーバー名>

image

Wenn Sie sich erfolgreich anmelden, werden Sie auf die Anzeige des angemeldeten Benutzers umgestellt.

image

Sie können auch überprüfen, ob Sie sich mit dem Befehl dir anmelden können.

image

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

image

Wenn Sie sich den serverseitigen Ordner C:\Users\sftptest ansehen, können Sie sehen, dass die Datei test3.txt gesendet wird.

image

Versuchen Sie, vom Client zu erhalten.

get test3.txt c:\temp\test4.txt

image

Ich konnte bestätigen, dass die Datei erhalten werden konnte.

image

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.