服务器测评网
我们一直在努力

Linux免密码登陆怎么设置?详细步骤有哪些?

在Linux系统中,免密码登录功能通过加密密钥认证机制实现,既能提升操作效率,又能避免密码泄露风险,本文将详细介绍其实现原理、具体配置步骤及安全注意事项,帮助用户高效部署这一功能。

Linux免密码登陆怎么设置?详细步骤有哪些?

免密码登录的原理

Linux免密码登录的核心基于SSH(Secure Shell)协议的公私钥认证机制,用户通过生成一对加密密钥(公钥和私钥),将公钥存储于目标服务器的授权列表中,私钥则保留在本地客户端,当客户端发起登录请求时,服务器会使用公钥加密一段随机数并发送给客户端,客户端用私钥解密后返回结果,服务器验证通过即可完成登录,全程无需手动输入密码,这种机制相比密码认证,具有更高的安全性和更强的抗破解能力。

准备工作与环境说明

在配置免密码登录前,需确保客户端与服务器已安装SSH服务(通常Linux系统默认已安装),本文以客户端为Ubuntu 20.04、服务器为CentOS 7为例,客户端IP为192.168.1.100,服务器IP为192.168.1.200,用户名均为testuser,若未安装SSH服务,可通过客户端执行sudo apt install openssh-client,服务器执行sudo yum install openssh-server进行安装。

生成SSH密钥对

在客户端终端中,使用ssh-keygen命令生成密钥对,执行以下命令:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

命令参数说明:

  • -t rsa:指定密钥类型为RSA,也可选择ecdsaed25519(后者安全性更高);
  • -b 4096:设置密钥长度为4096位,增强加密强度;
  • -C:添加注释,通常使用邮箱地址便于标识。

执行后,系统会提示输入密钥存储路径(默认为~/.ssh/id_rsa)和密码(用于加密私钥,若无需可直接回车跳过),成功后,客户端会在~/.ssh/目录下生成id_rsa(私钥)和id_rsa.pub(公钥)两个文件。注意:私钥文件需严格保密,禁止泄露或上传至公共服务器。

将公钥传输至目标服务器

将客户端生成的公钥内容添加到服务器的~/.ssh/authorized_keys文件中,是实现免密码登录的关键步骤,推荐以下两种方式:

Linux免密码登陆怎么设置?详细步骤有哪些?

使用ssh-copy-id命令(推荐)

客户端执行以下命令,自动将公钥传输至服务器并设置正确权限:

ssh-copy-id -i ~/.ssh/id_rsa.pub testuser@192.168.1.200

执行过程中需输入服务器用户密码,验证通过后,公钥将追加至服务器~/.ssh/authorized_keys文件,并自动设置文件权限为600(仅所有者可读写)。

手动传输公钥

ssh-copy-id命令不可用,可通过以下步骤手动操作:
(1)在客户端查看公钥内容:

cat ~/.ssh/id_rsa.pub

(2)在服务器创建~/.ssh目录(若不存在)并设置权限:

mkdir -p ~/.ssh && chmod 700 ~/.ssh

(3)将公钥内容追加至authorized_keys文件:

echo "客户端公钥内容" >> ~/.ssh/authorized_keys

(4)设置authorized_keys文件权限为600:

Linux免密码登陆怎么设置?详细步骤有哪些?

chmod 600 ~/.ssh/authorized_keys

验证免密码登录

完成上述配置后,在客户端执行以下命令登录服务器:

ssh testuser@192.168.1.200

若首次连接,系统会提示确认服务器指纹(输入yes即可);后续登录将直接进入服务器命令行界面,无需输入密码。

常见问题与解决方案

  1. 权限错误:若提示Permission denied (publickey,password),需检查服务器~/.ssh目录权限是否为700,authorized_keys文件权限是否为600,可通过chmod命令修正。
  2. 私钥权限问题:客户端私钥文件~/.ssh/id_rsa权限需设置为600,执行chmod 600 ~/.ssh/id_rsa
  3. SELinux或防火墙拦截:服务器若启用SELinux,需执行restorecon -Rv ~/.ssh恢复上下文;防火墙需开放SSH端口(默认22),执行sudo firewall-cmd --permanent --add-service=ssh && sudo firewall-cmd --reload

安全注意事项

  1. 私钥加密:生成密钥对时建议设置密码,即使私钥泄露,未授权用户也无法使用,可通过ssh-keygen -p命令为已有私钥添加密码。
  2. 定期更换密钥:出于安全考虑,建议定期重新生成密钥对并更新服务器authorized_keys文件。
  3. 限制登录用户:可通过服务器的/etc/ssh/sshd_config配置文件,设置AllowUsersDenyUsers指令,限制仅特定用户可使用密钥登录。
  4. 禁用密码登录:为提升安全性,可在完成免密码登录后,禁用密码认证方式,编辑sshd_config文件,将PasswordAuthentication no取消注释并重启SSH服务:sudo systemctl restart sshd

扩展应用

免密码登录不仅适用于手动操作,还可结合脚本实现自动化任务,通过scp命令实现文件自动传输,或使用rsync进行增量备份时无需手动干预,在服务器集群管理、CI/CD流水线部署等场景中,免密码登录也是提升效率的基础配置。

通过以上步骤,用户可轻松实现Linux系统间的免密码登录,在享受便捷操作的同时,务必重视密钥管理与安全防护,确保系统安全稳定运行。

赞(0)
未经允许不得转载:好主机测评网 » Linux免密码登陆怎么设置?详细步骤有哪些?