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és ecdsa, 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


TODO (rédacteur)

  • nada :p