Linux · 18 1 月, 2025 0

Linux设置公钥认证并使用密钥登录SSH

要使用密钥登录SSH,您需要按照以下步骤设置公钥认证:

1. 生成SSH密钥对

首先,在本地计算机上生成一个SSH密钥对(公钥和私钥)。可以通过以下命令来生成:

ssh-keygen -t rsa -b 4096 -C "[email protected]"
  • -t rsa:指定使用RSA算法生成密钥。
  • -b 4096:指定密钥长度为4096位。
  • -C “[email protected]”:为密钥添加一个注释(通常是您的邮箱地址)。

按照提示操作,选择密钥保存路径(默认是~/.ssh/id_rsa)和可选的密码保护。

2. 将公钥复制到远程服务器

生成密钥对后,您需要将公钥复制到远程服务器的~/.ssh/authorized_keys文件中。您可以手动将公钥复制到服务器,或者使用ssh-copy-id工具。

使用ssh-copy-id工具的命令如下:

ssh-copy-id username@remote_host

此命令会将您的公钥添加到远程服务器的~/.ssh/authorized_keys文件中。

3. 配置SSH服务器

确保远程服务器的SSH配置允许公钥认证。编辑远程服务器上的/etc/ssh/sshd_config文件,检查以下设置:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

然后重新启动SSH服务:

sudo systemctl restart sshd

4. 使用密钥登录

现在,您可以通过SSH使用密钥登录到远程服务器,命令如下:

ssh -i ~/.ssh/id_rsa username@remote_host

如果您的私钥文件不是默认的id_rsa,需要通过-i选项指定私钥文件的路径。

5. (可选)禁用密码认证

如果您希望只使用密钥登录,并禁用密码认证,可以在/etc/ssh/sshd_config中进行以下配置:

PasswordAuthentication no

然后再次重启SSH服务:

sudo systemctl restart sshd

这样,您的SSH服务器将只允许通过密钥进行认证,禁止密码登录。