Guide pratique complet de SSH sur Ubuntu - De la connexion au transfert de port et à la sécurisation

개요

SSH (Secure Shell) est un protocole réseau standard indispensable à la gestion à distance des serveurs Linux. Dans cet article, nous examinerons étape par étape, sous Ubuntu, la mise en place d’un serveur OpenSSH, l’authentification par clé publique sans mot de passe, le transfert de port SSH (port forwarding) pour les cas d’usage réseau en production, ainsi que les bonnes pratiques essentielles pour renforcer la sécurité.

1. OpenSSH 서버 설치 및 서비스 활성화

Afin de fournir un service d’accès distant sur le système Ubuntu, mettez à jour la liste des paquets et installez le paquet openssh-server.

sudo apt-get update -qq && sudo apt-get install -y openssh-server

Activez le service SSH pour qu’il démarre automatiquement au démarrage du système et lancez-le immédiatement à l’aide de la commande systemctl enable --now ssh.

sudo systemctl enable –now ssh

Vérifiez que le démon du service SSH (sshd) est bien actif et s’exécute correctement (active (running)).

sudo systemctl status ssh –no-pager

Exécutez la commande ss -tulpn | grep :22 pour vous assurer que le serveur est bien en écoute (LISTEN) sur le port par défaut 22 de SSH, prêt à recevoir les connexions réseau.

ss -tulpn | grep :22

2. 비밀번호 없는 접속을 위한 SSH 키 쌍 생성 및 등록

Créez le répertoire ~/.ssh pour y stocker les fichiers de clés SSH en toute sécurité, et définissez ses permissions sur 700 afin que seul son propriétaire puisse y accéder.

mkdir -p ~/.ssh && chmod 700 ~/.ssh

Si aucune paire de clés basée sur l’algorithme Ed25519 (réputé pour sa haute sécurité et ses performances) n’existe, générez-en une nouvelle avec la commande test -f ~/.ssh/id_ed25519 || ssh-keygen -t ed25519 -N '' -f ~/.ssh/id_ed25519.
Après l’exécution, vous pouvez vérifier que la clé privée (id_ed25519) et la clé publique (id_ed25519.pub) ont été correctement créées.

test -f ~/.ssh/id_ed25519 || ssh-keygen -t ed25519 -N ’’ -f ~/.ssh/id_ed25519

Ajoutez le contenu de la clé publique générée au fichier de liste d’autorisation d’authentification ~/.ssh/authorized_keys.

cat ~/.ssh/id_ed25519.pub » ~/.ssh/authorized_keys

Restreignez les permissions du fichier authorized_keys à 600 afin de préserver la sécurité de la liste des clés autorisées et de satisfaire aux vérifications strictes de permissions effectuées par le démon SSH.

chmod 600 ~/.ssh/authorized_keys

Tentez une connexion vers l’adresse de bouclage local (127.0.0.1) en spécifiant la clé privée Ed25519 créée pour valider le bon fonctionnement de l’authentification par clé.
Le résultat confirme que la connexion par clé locale a réussi sans nécessiter la saisie d’un mot de passe.

ssh -i ~/.ssh/id_ed25519 -o StrictHostKeyChecking=no $(whoami)@127.0.0.1 ’echo SSH 로컬 키 인증 접속 성공!’

3. 실무 네트워크 터널링: SSH 포트 포워딩 실습

Mettez à jour la liste des paquets et installez curl ainsi que python3 pour héberger un serveur web et tester les requêtes HTTP.

sudo apt-get update -qq && sudo apt-get install -y curl python3

Exécutez mkdir -p /tmp/webroot && echo '<h1>SSH Tunnel Test OK</h1>' > /tmp/webroot/index.html afin de créer le répertoire racine web pour le test de redirection de port et d’y générer un fichier HTML de test.

mkdir -p /tmp/webroot && echo ‘SSH Tunnel Test OK’ > /tmp/webroot/index.html

Lancez en arrière-plan un serveur web minimaliste sur le port 8080 pour simuler un service interne à l’aide de la commande python3 -m http.server 8080 --directory /tmp/webroot >/dev/null 2>&1 &.

python3 -m http.server 8080 –directory /tmp/webroot >/dev/null 2>&1 &

Démarrez un transfert de port local en arrière-plan pour acheminer les requêtes arrivant sur le port local 9090 vers le port 8080 du serveur de destination via le tunnel sécurisé SSH.
Après l’exécution de la commande, le tunnel de redirection de port est établi de manière sécurisée en tâche de fond, sans occuper la session de terminal.

ssh -f -N -L 9090:localhost:8080 -o StrictHostKeyChecking=no $(whoami)@127.0.0.1

Envoyez une requête HTTP au port local 9090 relayé par le tunnel SSH pour vous assurer que la connexion vers le serveur web interne est correctement établie.
Le résultat de la commande renvoie le contenu de la réponse du serveur web interne sur le port 8080 (<h1>SSH Tunnel Test OK</h1>), démontrant que la redirection de port fonctionne parfaitement.

curl -s http://localhost:9090

Une fois le test de redirection de port terminé, fermez proprement le processus du serveur web de test tournant en tâche de fond à l’aide de la commande pkill -f 'http.server 8080'.

pkill -f ‘http.server 8080’

4. 실무 SSH 서버 보안 강화 설정 (sshd_config)

Pour parer à tout imprévu lors des modifications de configuration et conserver le paramétrage d’origine, sauvegardez le fichier avec la commande sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak.

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Afin d’accroître la sécurité en bloquant toute tentative de connexion directe à distance du compte root, modifiez le paramètre de configuration en exécutant sudo sed -i 's/^#*PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config.

sudo sed -i ’s/^#PermitRootLogin./PermitRootLogin no/’ /etc/ssh/sshd_config

Exécutez sudo sshd -t pour vérifier de manière sécurisée et préalable l’absence d’erreurs de syntaxe ou de fautes de frappe dans le fichier de configuration SSH modifié.
L’absence totale de message d’erreur après l’exécution de la commande confirme que la syntaxe de configuration est parfaitement valide.

sudo sshd -t

Vérifiez que l’option de blocage de connexion root (PermitRootLogin no) a bien été prise en compte dans le fichier de configuration à l’aide de la commande grep -E '^(PermitRootLogin|PasswordAuthentication)' /etc/ssh/sshd_config || echo '설정 검증 완료'.
Le résultat affiche bien PermitRootLogin no, confirmant ainsi que le durcissement de la sécurité est correctement appliqué.

grep -E ‘^(PermitRootLogin|PasswordAuthentication)’ /etc/ssh/sshd_config || echo ‘설정 검증 완료’

Nous avons passé en revue l’essentiel des compétences requises en milieu professionnel sous Ubuntu : de la connexion SSH de base au transfert de port et au durcissement de la sécurité du serveur.
Appliquez progressivement ces recommandations de sécurité pour bâtir un environnement d’administration de serveurs à la fois plus sûr et plus efficace.