Configuration ssh pour l'admin

Comme tout unixien convaincu, j'accède aux machines distantes par ssh (Secure Shell). Étant d'un naturel paresseux, j'ai mis en place des options qui permettent de me faciliter la vie : un alias pour la connexion, et l'authentification par clé.

Alias

Il est possible de définir un alias pour une connexion, qui prend en compte plusieurs paramètres :

  • le nom de l'alias
  • le nom / l'adresse IP de la machine cible

  • l'utilisateur

  • le port SSH

  • et encore d'autres paramètres.

Ceci se fait dans le fichier .ssh/config.

La syntaxe « basique » est la suivante :

Host <alias>
  Hostname <nom DNS ou adresse IP>
  User <utilisateur>
  Port <port>

Pour le reste des paramètres, voir le fichier /etc/ssh/ssh_config, qui permet également de définir ces options pour tous les utilisateurs. Dès lors, pour me connecter à une machine distante, je n'ai plus qu'à faire :

ssh <alias>

et à entrer mon mot de passe.

Authentification par clé

Pour les connexions que j'effectue, le mot de passe est saisi manuellement. Mais on peut aller plus loin, notamment si on veut automatiser certaines actions (par exemple faire une copie de sauvegarde d'un serveur vers un autre, via ssh).

Dans ce cas, il est possible d'établir une connexion ssh en utilisant une clé, faisant partie d'une biclé (publique / privée).

Pour ce faire, la démarche est la suivante :

  • on génère une clé privée et la clé publique associée sur la machine « cliente » ;

  • on copie la clé publique dans les clés de l'utilisateur de la machine distante

  • et voilà !

Par exemple, si j'ai deux machines A et B, avec un utilisateur operator sur les 2 machines, on va générer une paire de clés sur chaque machine, avec la commande :

ssh-keygen -t dsa

On peut (ou pas) entrer une pass phrase. Dans le cas de transferts automatiques il vaut mieux ne pas mettre de pass phrase. Par défaut, le fichier utilisé est id_dsa.

On copie ensuite la clé publique d'une machine (cliente) à l'autre (cible) avec la commande :

cat .ssh/id_dsa.pub | ssh <user>@<machine> "cat - >>~/.ssh/authorized_keys"

Note : on pourrait utiliser la commande

scp .ssh/id_dsa.pub <user>@<machine>:~/.ssh/authorized_keys

mais dans ce cas, ceci écrase le contenu du fichier authorized_keys. La première commande permet d'ajouter des clés dans le fichier.

Il faut ensuite changer les permissions sur le répertoire et le fichier :

$ chmod 700 ~/.ssh
$ chmod 600 ~/.ssh/authorized_keys

Il est alors possible de se connecter directement de la machine cliente à la machine cible, sans entrer de mot de passe.

Catégorie
Tag