linux系统,linux允许ssh无密码远程登录的设置步骤

首页 2024-12-18 17:45:35



在Linux系统中配置SSH无密码远程登录(通常通过SSH密钥对认证)可以显著提升安全性与便利性。以下是详细步骤,适用于大多数基于Linux的发行版,如Ubuntu、CentOS等:
 
1. 生成SSH密钥对
 
首先,在本地计算机(即你计划用于远程登录的计算机)上生成SSH密钥对。如果已存在密钥对,可以跳过此步骤。
 
 
sshkeygen t rsa b 4096 C your_email@example.com
 
 
 `t rsa`:指定使用RSA算法。
 `b 4096`:指定密钥长度为4096位。
 `C your_email@example.com`:为密钥添加标签(通常是你的邮箱)。
 
系统会提示你输入保存密钥的文件路径和设置密码(可选,但为了提高安全性,建议设置)。默认情况下,密钥会保存在`~/.ssh/id_rsa`(私钥)和`~/.ssh/id_rsa.pub`(公钥)。
 
2. 将公钥复制到远程服务器
 
使用`sshcopyid`命令将公钥复制到远程服务器的`~/.ssh/authorized_keys`文件中。
 
 
sshcopyid user@remote_host
 
 
 `user`:远程服务器上的用户名。
 `remote_host`:远程服务器的IP地址或域名。
 
系统会提示你输入远程服务器的密码,以完成公钥的复制过程。
 
3. 配置SSH服务器(可选)
 
编辑远程服务器上的SSH配置文件(`/etc/ssh/sshd_config`),确保以下设置正确:
 
 
允许公钥认证
PubkeyAuthentication yes
 
禁用密码认证(可选,但强烈建议)
PasswordAuthentication no
 
确保挑战响应认证也被禁用(如果存在)
ChallengeResponseAuthentication no
 
允许使用.ssh/authorized_keys文件
AuthorizedKeysFile     .ssh/authorized_keys
 
 
修改后,重启SSH服务以使配置生效:
 
对于基于systemd的系统(如Ubuntu 16.04+):
 
 
sudo systemctl restart sshd
 
 
对于基于SysVinit的系统(如较旧的CentOS版本):
 
 
sudo service sshd restart
 
 
4. 验证配置
 
尝试通过SSH无密码登录远程服务器:
 
 
ssh user@remote_host
 
 
如果配置正确,你应该能够直接登录而无需输入密码。
 
注意事项
 
 确保`~/.ssh`目录和`~/.ssh/authorized_keys`文件的权限设置正确。通常,`~/.ssh`目录的权限应为`700`,`~/.ssh/authorized_keys`文件的权限应为`600`。
 使用`sshagent`管理你的私钥,以增强安全性。
 定期检查并更新SSH密钥对,特别是在私钥可能已泄露的情况下。