服务公告

服务公告 > 云计算 > Linux配置SSH免密码登录教程

Linux配置SSH免密码登录教程

发布时间:2024-12-06 00:59

在 Linux 系统上配置 SSH免密码登录,可以大幅提升远程管理的效率和安全性。以下是一个详尽的教程,涵盖从生成密钥对到测试和优化免密码登录的各个步骤,帮助您轻松实现这一功能。

一、生成密钥对 ?

1. 使用 ssh-keygen 生成密钥对

在本地计算机上打开终端,执行以下命令生成 RSA 类型的密钥对:

ssh-keygen -t rsa

解释

  • ssh-keygen:用于生成SSH密钥对的命令。
  • -t rsa:指定密钥类型为 RSA,一种广泛使用的加密算法。

2. 配置生成过程

执行上述命令后,系统会提示您输入密钥保存的位置和设置一个可选的密码:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa):
  • 默认路径:直接按 回车 键,密钥将保存在默认位置 ~/.ssh/id_rsa(私钥)和 ~/.ssh/id_rsa.pub(公钥)。
  • 设置密码(可选):为私钥设置一个密码,提高安全性。如果不需要密码,直接按 回车 键跳过。

二、复制公钥到目标服务器 ?

1. 使用 ssh-copy-id 复制公钥

在本地计算机上执行以下命令,将公钥复制到目标服务器:

ssh-copy-id <remote_username>@<remote_server>

解释

  • ssh-copy-id:用于将本地公钥复制到远程服务器的 ~/.ssh/authorized_keys 文件中。
  • <remote_username>:目标服务器的用户名。
  • <remote_server>:目标服务器的IP地址或主机名。

2. 输入目标服务器密码

执行命令后,系统会提示您输入目标服务器的密码以完成复制过程:

<remote_username>@<remote_server>'s password:

输入密码后,公钥将被添加到目标服务器的 ~/.ssh/authorized_keys 文件中。

3. 手动复制公钥(可选)

如果无法使用 ssh-copy-id,可以手动复制公钥:

cat ~/.ssh/id_rsa.pub | ssh <remote_username>@<remote_server> 'mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys'

解释

  • cat ~/.ssh/id_rsa.pub:显示本地公钥内容。
  • 管道 | 将公钥内容传递给远程服务器的命令。
  • mkdir -p ~/.ssh:确保 .ssh 目录存在。
  • cat >> ~/.ssh/authorized_keys:将公钥追加到 authorized_keys 文件中。

三、测试免密码登录 ✅

1. 使用SSH登录

在本地计算机上执行以下命令,测试免密码登录是否成功:

ssh <remote_username>@<remote_server>

解释

  • 如果配置正确,系统会直接登录到目标服务器,而无需输入密码。

2. 常见问题排查

  • 权限问题:确保本地 ~/.ssh 目录和密钥文件的权限正确。
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/id_rsa
    chmod 644 ~/.ssh/id_rsa.pub
    
  • 远程权限:确保远程服务器的 ~/.ssh 目录和 authorized_keys 文件权限正确。
    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys
    
  • SSH服务配置:检查远程服务器的 SSH 配置文件 /etc/ssh/sshd_config,确保以下行未被注释,并设置为 yes
    PubkeyAuthentication yes
    

四、可选配置以加强安全性 ?

1. 禁用密码登录

为了进一步提升安全性,可以禁用SSH的密码登录,只允许公钥认证。

编辑 SSH 配置文件

在目标服务器上编辑 /etc/ssh/sshd_config 文件:

sudo nano /etc/ssh/sshd_config

修改或添加以下行:

PubkeyAuthentication yes
PasswordAuthentication no

解释

  • PubkeyAuthentication yes:启用公钥认证。
  • PasswordAuthentication no:禁用密码认证,只有公钥认证有效。

重新启动 SSH 服务

应用配置更改,重新启动 SSH 服务:

sudo systemctl restart ssh

解释systemctl restart ssh 命令重新启动 SSH 服务,使配置更改生效。

2. 指定私钥位置(如果非默认)

如果您的私钥不在默认位置,可以在本地计算机上配置 ~/.ssh/config 文件,指定私钥的位置:

nano ~/.ssh/config

添加以下内容:

Host <remote_server>
    HostName <remote_server>
    User <remote_username>
    IdentityFile /path/to/private_key

上一篇: 蓝易云:国内免费cdn加速

下一篇: 蓝易云系统镜像性能优化通知。