Problèmes d'accès SSH avec le serveur Gitea auto-hébergé

Temp mail SuperHeros
Problèmes d'accès SSH avec le serveur Gitea auto-hébergé
Problèmes d'accès SSH avec le serveur Gitea auto-hébergé

Résoudre les problèmes d'accès SSH avec Gitea

Récemment, j'ai configuré un serveur Gitea à l'aide d'un conteneur Docker sur ma machine locale. Pour sécuriser la connexion, j'ai également configuré un proxy inverse Nginx avec SSL fourni par Certbot.

Bien que j'ai suivi les didacticiels de génération de clés SSH de Gitea et GitHub, j'ai rencontré des erreurs d'autorisation refusée lors de la tentative de connexion au serveur Gitea. Cet article explore les étapes que j'ai suivies et les méthodes de dépannage que j'ai utilisées pour résoudre les problèmes d'accès SSH.

Commande Description
ssh-keygen Génère une nouvelle paire de clés SSH pour des connexions sécurisées.
eval "$(ssh-agent -s)" Démarre l'agent SSH en arrière-plan pour gérer les clés SSH.
ssh-add ~/.ssh/id_rsa Ajoute la clé privée SSH générée à l'agent SSH.
pbcopy < ~/.ssh/id_rsa.pub Copie la clé publique SSH dans le presse-papiers sur les systèmes macOS.
xclip -sel clip < ~/.ssh/id_rsa.pub Copie la clé publique SSH dans le presse-papiers sur les systèmes Linux à l'aide de xclip.
proxy_pass Dirige la requête vers le serveur backend spécifié dans la configuration Nginx.
paramiko.RSAKey.from_private_key_file Charge une clé privée RSA à partir d'un fichier à l'aide de Paramiko en Python.
paramiko.SSHClient().set_missing_host_key_policy Ajoute automatiquement la clé d'hôte du serveur sans inviter l'utilisateur.
chmod 600 ~/.ssh/config Définit les autorisations correctes pour le fichier de configuration SSH afin de le sécuriser.

Dépannage des problèmes de connexion SSH

Les scripts fournis dans les exemples précédents sont conçus pour aborder divers aspects de la configuration et du dépannage de l'authentification par clé SSH pour un serveur Gitea. Le premier script utilise un script Bash pour générer une clé SSH avec ssh-keygen, ajoutez-le à l'agent SSH avec ssh-add, et copiez la clé publique dans le presse-papiers avec l'un ou l'autre pbcopy ou xclip. Ces étapes sont cruciales pour garantir que la clé SSH est correctement configurée et disponible pour utilisation. Le deuxième script configure Nginx pour inverser les requêtes de proxy vers le serveur Gitea, garantissant ainsi que SSL est correctement géré et que les requêtes sont correctement transmises avec proxy_pass.

Le script Python du troisième exemple utilise la bibliothèque Paramiko pour tester la connectivité SSH. Ce script charge la clé privée en utilisant paramiko.RSAKey.from_private_key_file et tente de se connecter au serveur Gitea. Si la connexion échoue, il fournit un message d'erreur qui aide à diagnostiquer le problème. Le quatrième script implique la mise à jour du fichier de configuration SSH pour garantir que les paramètres corrects sont en place. Des commandes comme Host, HostName, User, et IdentityFile sont utilisés pour spécifier les détails de connexion au serveur Gitea. Enfin, dix définit les autorisations appropriées sur le fichier de configuration pour le sécuriser.

Configuration de l'authentification par clé SSH pour Gitea

Utilisation du script Bash pour la configuration du frontend

# Step 1: Generate SSH Key
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
# Step 2: Start the ssh-agent in the background
eval "$(ssh-agent -s)"
# Step 3: Add your SSH key to the ssh-agent
ssh-add ~/.ssh/id_rsa
# Step 4: Copy the SSH key to clipboard
pbcopy < ~/.ssh/id_rsa.pub
# If using xclip
xclip -sel clip < ~/.ssh/id_rsa.pub

Configuration du proxy inverse Nginx pour Gitea

Utilisation du fichier de configuration Nginx

server {
    listen 80;
    server_name your_domain;
    return 301 https://$host$request_uri;
}
server {
    listen 443 ssl;
    server_name your_domain;
    ssl_certificate /etc/letsencrypt/live/your_domain/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain/privkey.pem;
    location / {
        proxy_pass http://localhost:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Diagnostic des problèmes de connexion SSH

Utilisation d'un script Python pour tester la connectivité SSH

import paramiko
def test_ssh_connection(host, port, username, key_path):
    k = paramiko.RSAKey.from_private_key_file(key_path)
    c = paramiko.SSHClient()
    c.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    try:
        c.connect(hostname=host, port=port, username=username, pkey=k)
        print("SSH connection successful")
    except Exception as e:
        print(f"Failed to connect: {e}")
    finally:
        c.close()
test_ssh_connection('your_domain', 22, 'your_username', '/path/to/id_rsa')

Mise à jour de la configuration SSH pour Gitea

Utilisation du fichier de configuration SSH

# Open SSH config file
nano ~/.ssh/config
# Add the following configuration
Host gitea_server
    HostName your_domain
    User your_username
    IdentityFile ~/.ssh/id_rsa
# Save and exit
chmod 600 ~/.ssh/config
# Test SSH connection
ssh -T gitea_server

Gestion avancée des clés SSH pour Gitea

Un autre aspect important de la gestion des clés SSH pour un serveur Gitea est la gestion et la rotation appropriées des clés. La rotation régulière de vos clés SSH peut améliorer la sécurité en réduisant le risque qu'une clé compromise soit utilisée indéfiniment. Vous pouvez créer une nouvelle paire de clés en utilisant ssh-keygen et mettez à jour vos paramètres Gitea pour refléter la nouvelle clé. Cette pratique est cruciale pour maintenir un accès sécurisé à votre serveur dans le temps. De plus, il est essentiel de garantir que vos clés SSH sont stockées en toute sécurité et ne sont pas exposées à des utilisateurs non autorisés. Utilisez des outils comme ssh-agent pour gérer les clés en toute sécurité en mémoire et éviter de laisser des clés privées sur le disque dans un état non protégé.

La mise en œuvre d'autorisations strictes sur vos clés SSH et vos fichiers de configuration constitue une autre couche de sécurité. Des commandes comme chmod 600 ~/.ssh/id_rsa et dix restreindre l’accès à ces fichiers, ce qui rend plus difficile l’accès des utilisateurs non autorisés. De plus, vous pouvez utiliser l'authentification multifacteur (MFA) pour ajouter une couche de sécurité supplémentaire à l'utilisation de votre clé SSH. Des outils tels que Google Authenticator ou des jetons matériels peuvent être intégrés à votre configuration SSH pour exiger une deuxième forme de vérification, ce qui rend l'accès non autorisé encore plus difficile.

Questions courantes et solutions aux problèmes d'accès SSH

  1. Pourquoi est-ce que je reçois une erreur « Autorisation refusée » ?
  2. Assurez-vous que vos clés SSH sont correctement ajoutées à l'agent SSH et que la clé publique est ajoutée aux clés autorisées de votre serveur Gitea.
  3. Comment générer une nouvelle paire de clés SSH ?
  4. Utilisez la commande ssh-keygen -t rsa -b 4096 -C "your_email@example.com" pour générer une nouvelle paire de clés SSH.
  5. Comment ajouter ma clé SSH à l'agent ssh ?
  6. Utilisez la commande eval "$(ssh-agent -s)" pour démarrer l'agent et ssh-add ~/.ssh/id_rsa pour ajouter votre clé.
  7. Comment puis-je copier ma clé publique SSH dans le presse-papiers ?
  8. Utiliser pbcopy < ~/.ssh/id_rsa.pub sur macOS ou xclip -sel clip < ~/.ssh/id_rsa.pub sous Linux.
  9. Que dois-je faire si ma clé SSH est compromise ?
  10. Générez une nouvelle paire de clés SSH et mettez à jour les clés de votre serveur Gitea et de tous les autres services où la clé a été utilisée.
  11. Comment puis-je définir les autorisations correctes sur mes fichiers de clé SSH ?
  12. Utilisez la commande chmod 600 ~/.ssh/id_rsa pour définir les autorisations appropriées sur votre fichier de clé privée.
  13. Pourquoi ma connexion SSH expire-t-elle ?
  14. Vérifiez votre connexion réseau, assurez-vous que le serveur Gitea est en cours d'exécution et que le port SSH est ouvert et accessible.
  15. Comment tester ma connexion SSH au serveur ?
  16. Utilisez la commande ssh -T your_username@your_domain pour tester la connexion.

Dernières étapes pour sécuriser la connexion SSH

En conclusion, établir une connexion SSH fiable à un serveur Gitea nécessite une configuration minutieuse des clés SSH, des paramètres de proxy Nginx et des pratiques de sécurité rigoureuses. En suivant les étapes décrites, notamment la génération et la gestion des clés SSH, la définition des autorisations appropriées et la configuration correcte de Nginx, les utilisateurs peuvent garantir une configuration sécurisée et fonctionnelle. Tester les connexions avec des outils comme Paramiko et la rotation régulière des clés améliore encore la sécurité et la fiabilité. Aborder ces éléments de manière globale aide à résoudre les problèmes de connexion et à maintenir un environnement de développement sécurisé.