Configurer et vérifier SFTP avec l’authentification par clé publique sur les clients et les serveurs
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.
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.
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.
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
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.
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.
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 <ユーザー名>@<サーバー名>
Si vous vous connectez correctement, vous serez basculé vers l’affichage de l’utilisateur connecté.
Vous pouvez également vérifier que vous pouvez vous connecter avec la commande dir.
Maintenant que vous avez préparé un fichier appelé « test3.txt », envoyez le fichier avec la commande put.
put c:\temp\test3.txt
Si vous regardez le dossier C:\Users\sftptest côté serveur, vous pouvez voir que le fichier test3.txt est envoyé.
Essayez d’obtenir du client.
get test3.txt c:\temp\test4.txt
J’ai pu confirmer que le dossier avait pu être obtenu.
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.