Configurer et vérifier SFTP avec l’authentification par clé publique sur les clients et les serveurs

Date de création de la page :

environnement

Windows
  • Windows 10 Professionnel
  • Windows Server 2019
  • Fenêtres 7
  • Windows Server 2012 R2
OpenSSH
  • 7,7p1
  • 8.1p1 - Bêta

※ Cela fonctionne dans d’autres versions, mais ce n’est pas confirmé

Au début

La dernière fois, vous avez configuré un serveur SFTP pour vérifier que l’authentification par mot de passe vous permet d’envoyer et de recevoir des fichiers. Cette fois, sftp envoie et reçoit des fichiers à l’aide de l’authentification par clé publique.

Préparation à l’avance

  • Un client OpenSSH est installé sur le client
  • Un serveur OpenSSH est installé sur le serveur.
  • Le serveur démarre le service OpenSSH et le port 22 est libéré.

Créer des clés privées et publiques dans le client

Connectez-vous au client. Les clés privées et publiques peuvent également être créées côté serveur, mais la clé privée sera le client et la clé publique sera détenue par le serveur. Créer côté client.

Démarrez PowerShell avec des droits d’administrateur.

image

Créez un fichier, accédez à n’importe quel dossier avec la commande cd et tapez la commande suivante :

ssh-keygen -t rsa -f id_rsa

Vous pouvez mettre une phrase secrète (mot de passe) dans la clé, alors s’il vous plaît mettez-la si nécessaire.

image

Si la clé est générée avec succès, les clés publiques et privées sont créées dans le dossier comme suit : « id_rsa » est la clé privée et « id_rsa.pub » est la clé publique.

image

image

Placer une clé publique sur le serveur

Connectez-vous à Windows avec votre compte SFTP pour le serveur.

Veuillez placer la clé publique créée « id_rsa.pub » dans le dossier suivant sur le serveur. 「. si vous n’avez pas de dossier « ssh », veuillez en créer un. Modifiez également le nom du fichier en « authorized_keys ». (Remplacez le <> par le nom d’utilisateur près duquel vous vous connectez avec SFTP.)

  • C:\Utilisateurs\nom d’utilisateur <>\.ssh

image

Notez que seuls les utilisateurs avec des « administrateurs » ou des utilisateurs SFTP doivent avoir accès à ce fichier. Les connexions Sftp échouent toujours si d’autres utilisateurs y ont accès. Par exemple, NG a un groupe d’utilisateurs ou Tout le monde ajouté à l’autorisation.

Dans cet exemple, « . Les droits d’accès du dossier « ssh » sont « Group:SYSTEM », « Group: Administrators » et « User: sftptest ». Si vous ne pouvez pas supprimer une autorisation, désactivez l’héritage des autorisations.

Activer l’authentification par clé publique sur le serveur

Connectez-vous au serveur avec les autorisations d’administrateur des utilisateurs, puis ouvrez les dossiers suivants :

  • C:\ProgramData\ssh

Comme il existe un fichier appelé « sshd_config », copiez-le et changez le nom du fichier en « sshd_config_default » et configurez une sauvegarde.

image

Ouvrez « sshd_config » dans l’éditeur de texte lancé avec des privilèges d’administrateur.

Pour activer l’authentification par clé publique, modifiez-la comme suit :

#PubkeyAuthentication yes

↓↓↓

PubkeyAuthentication yes

En outre, l’authentification par mot de passe est activée par défaut, donc si vous souhaitez la désactiver, modifiez-la comme suit.

#PasswordAuthentication yes

↓↓↓

PasswordAuthentication no

Je souhaite placer une clé publique pour chaque compte SFTP, je vais donc commenter la ligne suivante :

Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

↓↓↓

#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

Si vous souhaitez spécifier le répertoire racine pour chaque compte SFTP, ajoutez la ligne suivante : Selon que vous le spécifiez ou non, lorsque vous spécifiez un chemin d’accès au dossier à partir du client, il peut passer au format « C:\xxxxx » ou « /xxxxx ».

Match User <ユーザー名>
       ChrootDirectory <フォルダパス>

exemple

Match User TestUser
       ChrootDirectory C:\Users\TestUser

Après avoir enregistré sshd_config, redémarrez le serveur OpenSSH.

image

Envoyer et recevoir des fichiers de clients avec l’authentification par clé publique

Placez la clé privée « id_rsa » que vous avez créée avant de vous connecter à SFTP dans un dossier accessible uniquement à l’utilisateur qui exécute SFTP. Notez que les connexions sftp échoueront si elles sont placées dans un dossier accessible par d’autres utilisateurs. Surtout si le dossier dispose d’autorisations pour les groupes Utilisateurs et Tout le monde, il s’agit de NG.

Fondamentalement, il est recommandé car il se référera automatiquement au chemin d’accès si vous le placez dans le dossier suivant.

  • C:\Utilisateurs\nom d’utilisateur <>\.ssh

Client ». Les droits d’accès du dossier « ssh » sont « Group:SYSTEM », « Group: Administrators », « User: < Login user > ».

Si vous souhaitez accéder à sftp à l’aide de la clé privée, tapez la commande comme suit (remplacez le <>) : Si vous avez configuré une phrase secrète, entrez également une phrase secrète.

sftp -i id_rsa <ユーザー名>@<サーバー名>

image

Si vous vous connectez correctement, vous serez basculé vers l’affichage de l’utilisateur connecté.

image

Vous pouvez également vérifier que vous pouvez vous connecter avec la commande dir.

image

Maintenant que vous avez préparé un fichier appelé « test3.txt », envoyez le fichier avec la commande put.

put c:\temp\test3.txt

image

Si vous regardez le dossier C:\Users\sftptest côté serveur, vous pouvez voir que le fichier test3.txt est envoyé.

image

Essayez d’obtenir du client.

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

image

J’ai pu confirmer que le dossier avait pu être obtenu.

image

Résumé

Vous avez pu envoyer et recevoir des fichiers par SFTP à l’aide de l’authentification par clé publique. En utilisant une clé publique, le côté serveur ne sera pas en mesure de connaître le mot de passe. Il vous permet d’échanger des fichiers de manière plus sécurisée que l’authentification par mot de passe.