服务公告
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加速
下一篇: 蓝易云系统镜像性能优化通知。