Ce billet s'inspire d'un exercice que je donne lors de mes formations aux outils Linux.

Par défaut le démon ssh écoute sur toutes les cartes réseau et toutes les IP configurées sur la machine. Pour changer ceci il faut modifier le fichier /etc/ssh/sshd_config et positionner la ligne ListenAddress avec l'IP. Le shell suivant réalise cette opération.

#!/bin/bash
# Affecte l'adresse IP de eth0 à l'écoute du démon ssh

# Stocke l'IP dans une variable
IP=`ifconfig eth0 | grep "inet adr" | cut -d':' -f2 | tr -s [:blank:] ' ' | cut -d' ' -f1`

# sed est appelé avec l'option -i.bak afin de créer automatiquement un .bak de sshd_config
sed -i.bak "s/#ListenAddress 0.0.0.0/ListenAddress $IP/" /etc/ssh/sshd_config

Tester avec la commande diff

diff -c /etc/ssh/sshd_config.bak /etc/ssh/sshd_config
*** /etc/ssh/sshd_config.bak	2012-03-14 17:39:20.658111844 +0100
--- /etc/ssh/sshd_config	2012-03-14 17:41:11.011118977 +0100
***************
*** 12,18 ****
  
  #Port 22
  #AddressFamily any
! #ListenAddress 0.0.0.0
  #ListenAddress ::
  
  # Disable legacy (protocol version 1) support in the server for new
--- 12,18 ----
  
  #Port 22
  #AddressFamily any
! ListenAddress 192.168.1.28
  #ListenAddress ::
  
  # Disable legacy (protocol version 1) support in the server for new

Pour activer ceci redemarrer ssh