Connexion SSH
Depuis Le 9 janvier 2017, pour se connecter aux serveurs du ResEl, il est nécessaire d'utiliser des clés SSH. Ce guide couvre comment se connecter aux serveurs ResEl et quelques bonnes pratiques.
À noter que je ne suis pas un expert en sécurité. J'essaie d'appliquer au mieux les bonnes pratiques que j'ai appris. N'hésitez pas à cross-checker les références et à mettre à jour le wiki en conséquence. Tout ce qui touche à la sécurité a une date d'expiration et qu'aucun algorithme est parfait.
Création de clé SSH
Si vous êtes sur GNU+Linux, *BSD, ou autre système d'exploitation compatible, la commande à exécuter pour créer une clé SSH est la suivante :
ssh-keygen -t rsa -b 2048 -f ~/.ssh/id_rsa_resel -C "you@example.com"
où :
-
-t rsaest le type de clé à générer. À ce jour (janvier 2017) vous pouvez utiliser les clésecdsa,ed25519,rsa.dsaest déconseillé. -
-b 2048est la taille de la clé en bits. Pour du RSA, il n'est pas vraiment utile d'utiliser des clés plus grande que 2048 bits -
-f ~/.ssh/id_rsa_reselest le fichier ou sera enregistré la clé
Exécutez la commande et suivez les instructions (principalement choisissez un mot de passe pour chiffrer la clé). Vous
découvrez donc deux fichiers ~/.ssh/id_rsa_resel et ~/.ssh/id_rsa_resel.pub. L'un est la clé privée et l'autre la
clé publique. Ne partagez la clé privée avec personne, et gardez précieusement celle-ci sur votre ordinateur.
Si vous êtes sur Windows, installez le combo Mozilla ThunderBid/Enigmail. Voici un Guide d'installation en anglais.
Certification de la clé
Pour le moment, la certification des clés au ResEl est relativement manuelle. Celle-ci est faite à l'aide d'un Playbook Ansible qui va envoyer les clés depuis le LDAP sur les passerelles et les différents serveurs.
Vous devez donc envoyer votre clé publique par e-mail signé cryptographiquement à l'adresse president@resel.fr. Bien évidement le président de l'association doit avoir confiance en votre clé GPG. Attention : envoyez la clé dans le corps du message et non en pièce jointe, celles-ci n'étant pas signées.
Connexion aux serveurs du ResEl
Une fois que le président ait validé votre clé puis enregistré celles-ci sur les passerelles, vous pouvez vous connecter sur celles-ci. La méthode la plus manuelle est :
ssh -i ~/.ssh/id_rsa_resel username@pegase.adm-pub.resel.fr # pour Pegase
ssh -i ~/.ssh/id_rsa_resel username@resel.fr # pour Yoshi
Si tout se passe bien vous êtes désormais connecté sur les passerelles.
Configurer OpenSSH pour se simplifier la vie
C'est bien pratique de taper des commandes à rallonge, mais c'est plus simple quand on se connecte en 3 caractères !
Je vous propose donc une petite configuration OpenSSH (pratiquement la mienne) qui vous fera économiser plein de
caractères. Celle-ci se trouve dans le fichier ~/.ssh.config que vous aurez très certainement à creer.
# Configuration des passerelles ResEl
host pegase yoshi fronsac
IdentityFile ~/.ssh/id_rsa_resel # Spécifie la clé à utiliser
User lcarr # nom d'utilisateur sur la machine distante
ForwardAgent yes # Active l'Agent Fowarding
IdentitiesOnly yes # Interdit la connexion par mot de passe
# Raccourcis
Host pegase
Hostname pegase.adm-pub.resel.fr
Host yoshi
Hostname resel.fr
Host fronsac
Hostname rennes.resel.fr
# Proxy SSH pour gagner du temps (ne fonctionne que dans le ResEl)
Host *.adm
ProxyCommand ssh pegase nc %h %p 2> /dev/null
User lcarr
Ainsi avec ce fichier de configuration il est possible de se connecter aux passerelles avec les commandes suivantes :
ssh pegase # Passerelle interne
ssh yoshi # Passerelle externe
ssh fronsac # Passerelle de Rennes
D'autres raccourcis grâce à ce fichier pour se connecter aux machines directement
ssh skynet.adm # Passe automatiquement par Pegase
ssh alphabet # Pareil
L'agent SSH
Si vous désirez utiliser exclusivement des clés SSH sur les serveurs du ResEl et éviter de taper votre mot de passe à tout bout de champ vous pouvez utiliser un agent ssh.
Copiez ces lignes dans votre fichier ~/.bash_profile ou ~/.zshrc (en remerciant Joseph M. Reagle Jr.) :
SSH_ENV="$HOME/.ssh/environment"
function start_agent {
echo "Initialising new SSH agent..."
/usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
echo succeeded
chmod 600 "${SSH_ENV}"
. "${SSH_ENV}" > /dev/null
/usr/bin/ssh-add;
}
# Source SSH settings, if applicable
if [ -f "${SSH_ENV}" ]; then
. "${SSH_ENV}" > /dev/null
#ps ${SSH_AGENT_PID} doesn't work under cywgin
ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
start_agent;
}
else
start_agent;
fi
Vous devrez ensuite ajouter votre clé à l'agent, à l'aide de la commande suivante :
ssh-add ~/.ssh/id_rsa_resel
Références
- Bonnes pratiques SSH
- Tutoriel sur les certificats SSH
- Guide pour l'agent Fowarding
- Autre guide plus concis
- Illustration de l'Agent Fowarding (en dessins)
- Notes sur les tailles de clés (2013)
TODO (rédacteur)
- nada :p