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 rsa
est le type de clé à générer. À ce jour (janvier 2017) vous pouvez utiliser les clésecdsa
,ed25519
,rsa
.dsa
est déconseillé. -
-b 2048
est 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_resel
est 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