Logo Khaganat
Traductions de cette page?:

Ceci est une ancienne révision du document !


Connexion aux serveurs pour l'administration via une clé publique

Cet article présente comment se connecter à un serveur dont on est administrateur, quel qu'il soit (il n'est pas spécifique au MMORPG, c'est la même chose sur un serveur web basique) et en utilisant une authentification par clef publique.

La manipulation ici concerne une connexion en console depuis une machine sous linux.

L’intérêt d’une connexion à un serveur en utilisant une clef publique, c’est que vous pouvez oubliez les mots de passe de base des serveurs, il n’y en a plus qu’un à retenir : le votre. C'est très utile si vous avez plusieurs serveurs à administrer, ou que ces derniers ont des mots de passes à rallonge et impossible à retenir.

Génération de la clef

Ouvrez une console et générez une paire de clefs :

ssh-keygen -t rsa

Vous devriez avoir le texte suivant qui s'affiche :

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.

Une clef publique/privée est générée, en utilisant l’algorithme RSA spécifiquement pour les connexions ssh. Ne rien entrer pour le fichier où sauver la clef (laisser dans /home/user/.ssh/id_rsa, donc tapez sur “entrée”). Pour la “passphrase”, trouvez un mot de passe efficace. C’est plus simple s’il s’agit du même que pour signer vos clefs publiques habituellement.

Copier la clef sur le compte du serveur distant

ssh-copy-id -i ~/.ssh/id_rsa.pub yyy@xxxxx.org

Remplacez yyy@xxxxx.org par le nom de votre serveur et son utilisateur, par exemple root@monserveur.org. Entrez le mot de passe du serveur (donc pas votre passphrase de clef, il faut d’abord que le serveur sache que c’est bien vous !).

Et maintenant, c’est bon, vous pouvez vous connecter au serveur en ssh avec votre clef :

ssh yyy@xxxxx.org

ou

ssh root@monserveur.org

Sur le serveur, allez dans le dossier .ssh de /home/user et faites

more authorized_keys

Une ligne doit se terminer par votre nom d’utilisateur et le nom de votre machine, il s’agit des clefs publiques autorisées à se connecter.

Et si on veut une clef RSA par site ?

Il est possible d'indiquer automatiquement à SSH d'utiliser telle ou telle clef selon le site auquel on se connecte.

Imaginons qu'on ait généré deux clefs RSA comme indiqué ci-dessus. Il suffit d'indiquer pour cela un autre nom à la question “Enter file in which to save the key (/home/user/.ssh/id_rsa)” : /home/user/.ssh/cle1 et /home/user/.ssh/cle2. On a donc décidé d'utiliser les clefs comme suit:

  • cle1 pour aller sur le serveur 1
  • cle2 pour aller sur le serveur 2

Il faut alors créer un fichier config dans son répertoire .ssh dans son /home. Il contiendra pour chaque serveur un identifiant, son nom (ou adresse IP directe), le fichier rsa à utiliser et l'identifiant qui y est lié :

config
host serveur1
	HostName serveur1.fr
	IdentityFile ~/.ssh/cle1
	User totor
 
host serveur2
	HostName 202.127.12.13
	IdentityFile ~/.ssh/cle2
	User roxxor

Ensuite quand on se connectera avec SSH, le système saura que pour aller sur serveur1.fr, il faut qu'il utilise la clef ~/.ssh/cle1 et l'identifiant totor. Il ne restera qu'à entrer la passphrase qui y est liée. Il n'y a plus besoin de donner la clef nécessaire ou l'identifiant, juste éventuellement le port si il n'est pas standard.

Par exemple : Accès au serveur 1 qui a un port standard :

~$ ssh serveur1.fr

Accès au serveur 2 qui a son port SSH ouvert au numéro 66666 :

~$ ssh -p 66666 202.127.12.13

Se connecter sans mot de passe (méthode non sécurisée)

Se connecter sans mot de passe ouvre potentiellement une faille de sécurité. À réserver à des cas très particuliers !

Un de ces cas est la possibilité pour un serveur A de se connecter à un serveur B, pour effectuer une sauvegarde des données par exemple. Le serveur A doit lui-même être bien protégé.

Il suffit de créer une clé sur le serveur A, comme indiqué plus haut (ssh-keygen -t rsa) mais de ne pas rentrer de mot de passe. Cette clé pourra donc être utilisée pour se connecter sans mot de passe.

Ensuite on ajoute cette clé sur le serveur B (ssh-copy-id -i ~/.ssh/id_rsa.pub yyy@xxxxx.org).

Comme les fichiers id_rsa et id_rsa.pub peuvent facilement être copiés d'un ordinateur à l'autre, on peut sécuriser un peu en faisant en sorte que le serveur B n'accepte la clé du serveur A que si cette clé est utilisé depuis l'adresse IP du serveur A.

Il faut alors ajouter “from=IP1,IP2” dans le fichier authorized_keys, au début de la clé en question.

Exemple :

from="192.02.300.01" ssh-rsa XXXYYYZZZ(clé) user@server

Se connecter sans retaper trop souvent son mot de passe (méthode sécurisée)

Il suffit d'utiliser un “agent ssh” qui va se souvenir de votre clé. En théorie, votre mot de passe ne devrait être demandé qu'une fois par session, la première fois que vous déverrouillez la clé.

eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_rsa

Pour aller plus loin

CC Attribution-Share Alike 4.0 International Driven by DokuWiki
fr/connexion_serveur_admin.1473836274.txt.gz · Dernière modification : 2021/12/03 19:18 (modification externe)

Licences Mentions légales Accueil du site Contact