Maison  >  Article  >  tutoriels informatiques  >  Comment configurer l'authentification par clé SSH dans le système Linux

Comment configurer l'authentification par clé SSH dans le système Linux

王林
王林avant
2024-03-08 09:49:02618parcourir

SSH (Secure Shell) est un protocole réseau crypté largement utilisé pour exécuter des services réseau en toute sécurité sur des réseaux non sécurisés.

SSH fournit des méthodes de communication et d'authentification cryptées, qui rendront la transmission de données plus sécurisée et fiable.

L'authentification par clé SSH est une méthode d'authentification plus sécurisée et plus recommandée que l'authentification par mot de passe traditionnelle. En termes de sécurité, l'authentification par clé SSH offre un niveau de protection plus élevé car elle repose sur un mécanisme de cryptage de clés publiques et privées, réduisant efficacement le risque de piratage de mot de passe.

L'authentification par mot de passe n'est pas très sécurisée dans de nombreux cas, car les mots de passe peuvent être devinés, piratés ou même menacés par des attaques de l'homme du milieu pendant la transmission. Cela souligne l’importance d’adopter des mesures de sécurité plus sophistiquées et à plusieurs niveaux pour garantir que l’identité et les données des utilisateurs sont protégées plus efficacement.

L'authentification par clé consiste à utiliser une combinaison de clés publiques et privées, ce qui augmente considérablement la sécurité.

La clé privée de l'utilisateur est enregistrée localement, tandis que la clé publique est stockée sur le serveur distant. Cette disposition augmente la sécurité car même si un attaquant intercepte la clé publique, il est difficile de déduire à rebours la clé privée. Cette méthode offre un moyen d’authentification plus fiable.

Comment configurer lauthentification par clé SSH dans le système Linux

Générer une paire de clés SSH

Tout d’abord, assurez-vous que l’outil OpenSSH est installé sur votre système Linux.

La plupart des distributions Linux sont généralement livrées avec cet outil préinstallé. S'il n'est pas installé sur votre système, il peut être facilement installé via le gestionnaire de packages.

Installez OpenSSH sur Debian/Ubuntu en utilisant apt :

sudo apt update
sudo apt install openssh-client openssh-server

Installez OpenSSH en utilisant yum sur Red Hat/CentOS :

sudo yum install openssh-clients openssh-server

Générer une paire de clés en utilisant ssh-keygen

Une fois OpenSSH installé, vous pouvez utiliser la commande ssh-keygen pour générer une paire de clés SSH.

L'utilisation de base de la commande

est la suivante :

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
  • -t rsaSpécifiez le type de clé comme RSA.
  • -b 4096Spécifiez la longueur de la clé à 4096 bits pour améliorer la sécurité.
  • -C "your_email@example.com" Ajoutez un commentaire, généralement en utilisant votre adresse email.

Après avoir généré la paire de clés, vous pouvez choisir de la stocker dans l'emplacement par défaut (sous le répertoire ~/.ssh/) ou de choisir un autre emplacement.

La paire de clés générée comprend deux fichiers : le fichier de clé privée (id_rsa)和公钥文件(id_rsa.pub). Le fichier de clé privée est stocké localement, tandis que le fichier de clé publique doit être copié sur le serveur distant.

Les clés privées sont des informations sensibles et doivent être conservées correctement. La clé publique est une information publique utilisée pour l'authentification.

Stockage et gestion des clés

Par défaut, la paire de clés SSH générée sera stockée dans le répertoire ~/.ssh/ 目录下。这个目录包含了两个主要文件:id_rsa(私钥)和 id_rsa.pub de l'utilisateur. Ce répertoire contient deux fichiers principaux : id_rsa (clé privée) et id_rsa.pub (clé publique). Cette configuration est destinée à permettre aux utilisateurs de trouver et de gérer facilement les clés lors de l'utilisation de SSH.

Cependant, vous souhaiterez parfois stocker vos clés ailleurs pour des raisons de sécurité ou d'organisation. Ceci peut être réalisé en spécifiant le chemin de stockage lors de la génération de la paire de clés.

Par exemple :

ssh-keygen -t rsa -b 4096 -f /path/to/your/keys/my_key -C "your_email@example.com"

Cela stockera la clé privée sous /path/to/your/keys/my_key,公钥存储为 /path/to/your/keys/my_key.pub.

SSH Key Agent est un programme qui peut gérer les clés privées SSH et mettre en cache le mot de passe déchiffré de la clé privée après une connexion afin que les opérations SSH ultérieures ne nécessitent pas de ressaisir le mot de passe.

1. Démarrez l'agent SSH :

eval "$(ssh-agent -s)"

2. Ajouter une clé privée à l'agent :

ssh-add ~/.ssh/id_rsa

De cette façon, vous n'avez pas besoin de saisir le mot de passe de la clé privée à chaque fois que vous vous connectez via SSH, ce qui améliore la commodité et la sécurité d'utilisation.

En utilisation réelle, vous pouvez disposer de plusieurs paires de clés pour différents serveurs ou objectifs.

Pour mieux gérer ces paires de clés, vous pouvez utiliser des fichiers de configuration SSH ou des alias pour les fichiers de clés.

Configurer le serveur SSH

Connectez-vous au serveur cible

Avant de pouvoir vous connecter au serveur cible à l'aide de l'authentification par clé SSH, assurez-vous que le service SSH est activé sur le serveur cible. Dans la plupart des systèmes Linux, le service SSH est démarré par défaut.

ssh username@your_server_ip

Assurez-vous de remplacer username 为你的用户名,your_server_ip par l'adresse IP de votre serveur cible. Cela tentera de se connecter en utilisant l'authentification par mot de passe par défaut.

Installer la clé publique manuellement

L'installation manuelle d'une clé publique est une méthode de base qui consiste à ajouter le contenu de votre clé publique à un fichier ~/.ssh/authorized_keys sur le serveur cible.

1. Copiez le contenu de la clé publique locale dans le presse-papiers :

cat ~/.ssh/id_rsa.pub

2. Sur le serveur cible, utilisez un éditeur de texte pour ouvrir le fichier ~/.ssh/authorized_keys :

nano ~/.ssh/authorized_keys

3、将剪贴板上的公钥内容粘贴到文件末尾,并保存文件。

4、回到本地机器,尝试使用密钥身份验证登录:

ssh username@your_server_ip

通过ssh-copy-id简化公钥部署

ssh-copy-id 命令可以简化将本地公钥复制到远程服务器的过程。

这个命令会自动处理将公钥添加到目标服务器的 ~/.ssh/authorized_keys 文件中。

ssh-copy-id username@your_server_ip

确保替换 username 为你的用户名,your_server_ip 为目标服务器的 IP 地址。这个命令将提示你输入用户密码,然后将本地公钥复制到目标服务器上。

通过这两种方法,你可以在目标服务器上配置 SSH 密钥身份验证,提高登录的安全性和便利性。

SSH 配置文件详解

~/.ssh/config 文件的作用和结构

~/.ssh/config 文件是一个用于配置 SSH 客户端行为的配置文件。

它允许你为不同的主机设置自定义的配置选项,从而简化 SSH 连接的管理。

创建 ~/.ssh/config 文件:

touch ~/.ssh/config

编辑 ~/.ssh/config 文件:

nano ~/.ssh/config

使用别名、端口号等配置项简化SSH连接

配置文件中可以包含多个主机条目,每个条目定义了连接到远程主机的配置选项。

以下是一个简单的例子:

Host example
HostName your_server_ip
User username
Port 2222
IdentityFile ~/.ssh/id_rsa
  • Host:设置别名,用于代替实际的主机名。
  • HostName:远程主机的 IP 地址或域名。
  • User:连接时使用的用户名。
  • Port:SSH 连接的端口号。
  • IdentityFile:指定用于身份验证的私钥文件路径。

实际场景中的示例配置文件

以下是一个更为复杂的 ~/.ssh/config 文件,涵盖了多个主机和配置选项:

Host work
HostName work.example.com
User alice
Port 22
IdentityFile ~/.ssh/work_key

Host personal
HostName personal.example.org
User bob
Port 2222
IdentityFile ~/.ssh/personal_key

Host github
HostName github.com
User git
IdentityFile ~/.ssh/github_key

这样,你只需要使用别名就能够轻松连接到相应的主机,而不必记住每个主机的详细信息。

限制和加固SSH访问

禁用密码身份验证

禁用密码身份验证是提高 SSH 安全性的重要步骤之一。

这样,用户只能通过密钥身份验证进行访问,而不再依赖弱密码。

sshd_config中禁用密码身份验证:

1、打开 sshd_config 文件:

sudo nano /etc/ssh/sshd_config

2、找到并修改以下行:

PasswordAuthentication no

3、保存文件并重新启动 SSH 服务:

sudo service ssh restart

使用sshd_config文件设置访问限制

sshd_config 文件包含了用于配置 SSH 服务器的各种选项。

通过适当配置,你可以限制用户访问、定义允许登录的用户、设置登录时的认证方式等。

一些常用的 sshd_config 选项:
  • AllowUsers:指定允许登录的用户列表。
  • DenyUsers:指定禁止登录的用户列表。
  • AllowGroups:指定允许登录的用户组列表。
  • DenyGroups:指定禁止登录的用户组列表。
  • PermitRootLogin:禁用或限制 root 用户的远程登录。
示例:
AllowUsers alice bob
DenyUsers mallory
AllowGroups sshusers
DenyGroups badusers
PermitRootLogin no

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer