Outils d'utilisateurs

Outils du Site


ssh_configuration

Configuration de base du serveur

Une fois le serveur OpenSSH installé, ouvrez le fichier /etc/ssh/sshd_config et décommentez les lignes suivantes :

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

Redémarrez le serveur via la commande suivante :

Utilisateur$ /etc/init.d/ssh restart

Génération et positionnement des clefs sous Linux & Mac

Commencez par lancer la génération via la commande suivante :

Utilisateur$ ssh-keygen -t rsa -b 4096

Laissez le répertoire d'enregistrement des clefs par défaut :

Generating public/private rsa key pair.
Enter file in which to save the key (/home/test/.ssh/id_rsa): (Laissez par défaut et pressez Entrée)

Choisissez ensuite si vous désirez indiquer une phrase de passe pour votre clef.

Il s'agit là de faire un choix entre sécurité et simplicité : si vous ne choisissez pas de mot de passe, en cas de vol de votre clef privé, la personne aura un accès direct à vos serveurs, cependant entrer la phrase de passe à chaque fois peut s'avérer ennuyeux.

Ici nous choisirons de ne pas indiquer de mot de passe :

Created directory ‘/home/test/.ssh’.
Enter passphrase (empty for no passphrase): (Laissez par défaut et pressez Entrée)
Enter same passphrase again: (Laissez par défaut et pressez Entrée)
our identification has been saved in /home/Utilisateur/.ssh/id_rsa.
Your public key has been saved in /home/Utilisateur/.ssh/id_rsa.pub.
The key fingerprint is:
95:05:13:a1:a4:71:27:fe:a0:2f:d7:4e:af:82:8a:a8 Utilisateur@serveur.com
The key’s randomart image is:
+–[ RSA 4096]—-+
| . + *+.      |
| * + +        |
| . + o        |
| . +          |
| . S .        |
| . .          |
| ..o o        |
| . . .o.o .   |
|E . .. .o..   |
+————-----—–---+

Envoyez votre clef publique sur le serveur OpenSSH:

Utilisateur$ scp ~/.ssh/id_rsa.pub Utilisateur@serveur.com:~/clefPublique

Entrez ensuite cette clef dans le fichier authorize_keys sur le serveur OpenSSH:

Utilisateur$ touch ~/.ssh/authorized_keys
Utilisateur$ cat clefPublique >> ~/.ssh/authorized_keys

Génération et positionnement des clefs sous Windows avec PuttyGen et WinSCP

Commencez par télécharger PuttyGen ici, il s'agit de l'outil de génération de clef.

Lancez PuttyGen et générez une clef de type SSH2-RSA et d'une taille de 4096 bits, puis enregistrez les deux clefs où vous le souhaitez (Mes Documents par exemple)

Téléchargez WinSCP ici, puis installez le.

Envoyez la clef publique générée sur le serveur OpenSSH, placez la dans le répertoire home de l'utilisateur sur lequel se connecter. Le client WinSCP fonctionne comme la majorité des clients FTP graphique connus, je ne vais donc pas détailler son utilisation.

Entrez ensuite cette clef dans le fichier authorize_keys sur le serveur OpenSSH:

Utilisateur$ ssh-keygen -i -g ~/clefPublique > ~/clefPubliqueOpenSSH
Utilisateur$ touch ~/.ssh/authorized_keys
Utilisateur$ cat clefPubliqueOpenSSH >> ~/.ssh/authorized_keys

Conversion d'une clé Windows pour Linux

Lancez PuttyGen, cliquez sur “Load”, Sélectionnez votre clé privée précédemment générée pour Windows. Cliquez sur l'onglet “Conversion”, cliquez sur “Export Openssh key”. Nommez la clé nomdelaclé.ssh

Connexion via les clients Linux & Mac

Vous pouvez vous connecter tout simplement ainsi:

Utilisateur$ ssh Utilisateur@serveur.com

Vous n'êtes désormais plus prompté pour votre mot de passe.

Connexion sous Windows via Putty

Lancez PuttySSH, allez dans Connections/SSH/Auth et cliquez sur “Browse”, puis choisissez votre clef privée.

Allez ensuite dans Session puis indiquez l’adresse du serveur, et cliquez sur Open.

Vous voila connecté.

Suppression de la connexion par mot de passe sur le serveur

Sur le serveur OpenSSH, ouvrez de nouveau le fichier /etc/ssh/sshd_config et indiquez que vous n’autorisez plus la connexion par mot de passe :

PasswordAuthentication no

Redémarrez enfin le serveur OpenSSH:

Utilisateur$ /etc/init.d/ssh restart

Vous avez terminé, attention cependant à ne pas perdre votre clef privée.

Administration

Le terminal freeze régulièrement

Si la connexion freeze après un certain temps d'inactivité, ajoutez les deux lignes suivantes au fichier de configuration du serveur SSH. Les valeurs peuvent être ajustée.

ClientAliveInterval 5
ClientAliveCountMax 2

Les restrictions d'accès

#Authoriser l'accès seulement à: utilisateur1 utilisateur2
AllowUsers utilisateur1 utilisateur2

#Authoriser l'accès seulement aux groupes d'utilisateurs: groupe1 groupe2
AllowGroups groupe1 groupe2

#Interdire l'accès en direct au compte root
PermitRootLogin no

Changer une passphrase

Le programme ssh-keygen permet de changer la passphrase associée à un couple clef privée/publique :

utilisateur $ ssh-keygen -p [--P old_passphrase] [-N new_passphrase] -f keyfile

Si (old|new)_passphrase ne sont pas donnée, ils seront demandés à l'utilisateur par un prompt.

Ajouter un utilisateur

Lorsque vous êtes l'administrateur de la machine et qu'elle est déjà configurée pour n'accepter que les passphrases, l'utilisation de ssh-copy-id n'est pas possible pour ajouter une clef à un autre utilisateur. En utilisant un compte disposant de suffisemment de droits, il est possible d'utiliser :

cat id_xxx.pub | ssh admin_user@domain "cat - >> /home/new_ssh_user/.ssh/authorized_keys"

Révoquer une clef compromise

Si jamais une clé a été compromise et que l'on souhaite la révoquer, openssh n'offre pas de fonctionnalité telque l'usage de clé de révocation. Il faudra donc se connecter sur le serveur et ajouter la clé publique de la paire de clés compromises dansun fichier tenant lieu de liste de révocation.

Ajout à la configuration de sshd (/etc/ssh/sshd_config) :

RevokedKeys  %h/.ssh/revokedKeys

Ajout d'une clé à la liste de révocation (sur le serveur) :

cat id_rsa.pub >> ~/.ssh/revokedKeys

Utilisation de certificats d'authentification

Authentification du client

Afin de ne pas avoir à ajouter une nouvelle clé dans le fichier authorized_keys à chaque fois que l'on souhaite ajouter un nouveau client ssh, ou pire de dupliquer une seule clé privée sur plusieurs pc, il est possible d'utiliser des certificats. Le principe consiste à creer une autorité de certification (en l'occurence une paire de clé ssh). La clé privée de l'autorité servira a signer des clés publiques de client. La clé publique de l'autorité de certification servira sur le serveur à vérifier l'identité des clients (par le biais de la vérification de la signature).

Génération des clés de l'autorité de certification :

ssh-keygen -t rsa -f cert_key

Positionnement de la clé publique de l'autorité de certification sur le serveur :

cat cert_key.pub >> ~/.ssh/trustedUserCAKeys

Ajouter les lignes suivantes à sshd :

    TrustedUserCAKeys         %h/.ssh/trustedUserCAKeys
    AuthorizedPrincipalsFile  %h/.ssh/authorizedPrincipalsFile

Le fichier 'authorizedPrincipalsFile' contient le(s) nom(s) d'utilisateur(s) qui doivent être associé à un certificat pour que celui-ci soit valide. Par exemple :

yod_maison
yod_boulot

Signature de la clé publique d'un utilisateur :

    ssh-keygen -s cert_key -I identifiant_de_ma_cle -n yod_boulot user_key.pub

Le fichier de certificat ainsi généré sera 'user_key-cert.pub'. A noter qu'il est possible, voir recommandé de limiter la durée de validité d'un certificat (option -V de ssh-keygen).

configuration du fichier ~/.ssh/config sur le pc de l'utilisateur :

Host testssh
        User yod
        Hostname 192.168.0.10
        PreferredAuthentications publickey
        IdentityFile ~/.ssh/id_rsa

Connection au serveur :

    ssh testssh

Ainsi, la configuration du serveur ne changera plus tant que la clé de l'autorité de certification ne change pas. Et il suffit de signer la clé publique de tout nouveau client pour lui permettre l'accès au serveur.

Authentification du serveur

TODO : c'est sensiblement la même chose que pour l'authentification du client, hormis l'utilisation de l'option -h de ssh-keygen pour la signature de la clé publique du serveur, et le fait que le nom du serveur (monserveur.mondomaine.fr) doit faire parti des nom d'utilisateurs paramétrés pour le certificat (a défaut de nom, il faut utiliser l'adresse ip du serveur).

Biblio

ssh_configuration.txt · Dernière modification: 2017/04/09 15:33 (modification externe)