Il est possible d'exécuter sftp de manière entièrement scriptée. C'est ce qu'on appelle le mode batch. Il vous permet d'effectuer des transferts sftp sans aucune interaction sur le clavier. Cela est utile, par exemple, si vous souhaitez configurer un transfert récurrent dans un travail cron ou un transfert planifié unique à l'aide de la commande at(utilisation de l'option -b).
Cependant, étant donné que le mode batch est non interactif, il ne vous permet pas de saisir un nom d'utilisateur et un mot de passe lors de la connexion au serveur. Donc, pour utiliser le mode batch, vous devrez vous connecter automatiquement. La manière standard de procéder, et la plus sécurisée, consiste à utiliser l'authentification par clé publique. Passons en revue cela rapidement.
L'authentification par clé publique vous permet de vous connecter à un serveur distant en toute sécurité sans saisir votre mot de passe. Tout d'abord, vous générez deux clés sur votre système local: une clé privée et une clé publique. Vous copiez ensuite le texte de votre clé publique sur le serveur distant. Après cela, tant que vous avez la clé privée sur votre ordinateur local, vous pouvez vous connecter à l'ordinateur distant sans taper de mot de passe.
Pour ce faire, la première étape consiste à générer les clés publiques et privées.
Les clés seront situées dans le répertoire .ssh de votre répertoire personnel sur votre système local. Tout d'abord, vérifiez si le répertoire .ssh existe déjà. S'il n'existe pas créez le avec les droits 700.
Maintenant, nous devons générer les clés à proprement parlé. Le programme utilisé pour générer des paires de clés pour le protocole ssh est appelé ssh-keygen. Exécutez-le sur la ligne de commande sans aucune option : ssh-keygen.
Il vous demandera les informations dont il a besoin pour générer les clés. Utilisez toutes les valeurs par défaut (appuyez sur "Entrée" à chaque invite).
L'une des invites vous demandera une phrase secrète, qui offre un niveau de sécurité supplémentaire en plus de la clé privée chiffrée. Ici, nous avons laissé le mot de passe vide. Si vous souhaitez utiliser un mot de passe avec votre clé, vous devez utiliser un programme appelé ssh-agent pour charger votre clé en mémoire. Cela vous permettra d'utiliser une clé protégée par mot de passe sans avoir à taper le mot de passe plus d'une fois.
La sortie de ssh-keygen ressemblera à ceci :
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:A+0zCzL44XMfK6zSqaldLl9V37pz7cvG0jDglxuli9Y root@provence The key's randomart image is: +---[RSA 2048]----+ | | | . | | . . . | | . o . o . . | | . + . S . o = | | o + o = . O | | .=oo o = O. | | .o+o+o. o o.Eo+.| |..+=+. .o . .oo+o| +----[SHA256]-----+
Vos clés sont maintenant générées. Il existe deux fichiers, id_rsa et id_rsa.pub. Nous devons également modifier les autorisations sur ces fichiers, afin que personne d'autre que vous ne puisse y accéder (lecture, écriture et exécution). La valeur octale de ces droits est 700.
Connectez vous à votre serveur via ssh en founissant compte et mot de passe.
Vérifiez sous le sous-répertoire du compte utilisé pour la connexion que le sous-répertoire .sshexiste. Si ce n'est pas le cas, créez le.
Vérifier que ce sous-répertoire .ssh contienne le fichoer authorized_keys. Si ce n'est pas le cas, créez le avec les droits 600.
Il faut maintenant ajouter à ce fichier le contenu du fichier id_rsa.pub généré localement. Pour cela, déconnectoons nous du serveur distant. On va de nouveau se reconnecter via ssh (avec demande de connexion) en exécutant la commande :
cat ~/.ssh/id_rsa.pub | ssh myname@myhost.com 'cat >> ~/.ssh/authorized_keys'
Testez le fonctionnement en tentant maintenant une connexion ssh via la commande : ssh compte@hôte. La connexion devrait se faire sans besoin d'un mot de passe.
Si le test échoue, allez dans le fichier /etc/ssh/sshd_config et vérifiez la présence des 2 lignes :
RSAAuthentication yes
PubkeyAuthentication yes
Rédaction par Jean-Marie Piatte (1983-2021)