当前位置:首页 > 系统教程 > 正文

Linux中设置SSH免密码(密钥)登录

Linux中设置SSH免密码(密钥)登录

一步步实现安全便捷的远程访问

在日常的Linux服务器管理中,每次登录都输入密码不仅繁琐,还存在密码泄露的风险。通过配置SSH免密码登录(也称为SSH密钥认证),你可以实现既安全又高效的远程连接。本文将详细介绍在Linux系统中设置SSH密钥登录的完整步骤,即使是新手也能轻松掌握。

Linux中设置SSH免密码(密钥)登录 SSH免密码登录 SSH密钥认证 Linux SSH配置 安全远程登录 第1张

前置条件

  • 一台Linux本地机器(用于生成密钥和发起连接)
  • 一台远程Linux服务器(目标主机)
  • 两台机器均已安装OpenSSH服务(通常默认安装)
  • 本地机器能够通过网络访问远程服务器

第一步:生成SSH密钥对

在本地终端中执行以下命令,开始生成密钥对:

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

参数说明:-t rsa指定密钥类型为RSA,-b 4096设置密钥长度为4096位(更安全),-C后添加注释(通常是邮箱)。执行后,系统会提示你设置密钥保存路径(默认~/.ssh/id_rsa)和密码短语(passphrase)。如果希望实现完全免密,可以直接回车跳过密码短语设置。生成成功后,你会得到两个文件:私钥(id_rsa)和公钥(id_rsa.pub)。

第二步:将公钥复制到远程服务器

使用ssh-copy-id命令可以方便地将公钥添加到远程主机的授权列表:

    ssh-copy-id 用户名@远程服务器IP  

例如:ssh-copy-id root@192.168.1.100。该命令会提示你输入远程用户的密码,然后自动将本地公钥追加到远程服务器的~/.ssh/authorized_keys文件中,并设置正确的权限。如果没有ssh-copy-id命令,也可以手动复制:cat ~/.ssh/id_rsa.pub | ssh 用户名@远程服务器IP "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

第三步:测试免密码登录

现在尝试从本地登录远程服务器:

    ssh 用户名@远程服务器IP  

如果配置正确,你将直接进入远程系统的Shell,无需输入密码。如果仍然提示输入密码,请检查以下常见问题:

  • 远程主机的~/.ssh目录权限应为700,authorized_keys文件权限应为600。
  • 检查SSH服务配置文件/etc/ssh/sshd_config,确保PubkeyAuthentication设为yes,并重启服务sudo systemctl restart sshd
  • 本地私钥文件权限不能太开放,建议设为600:chmod 600 ~/.ssh/id_rsa

安全建议

完成Linux SSH配置后,为了进一步增强安全性,可以考虑禁用密码登录,只允许密钥认证。编辑/etc/ssh/sshd_config,设置PasswordAuthentication no,然后重启SSH服务。这样即使密码泄露,攻击者也无法通过密码登录,实现了真正的安全远程登录

总结

通过以上步骤,你已成功在Linux上配置了SSH免密码登录。密钥认证不仅简化了登录流程,还大幅提升了系统安全性。掌握SSH密钥认证是Linux管理员必备技能,希望本文能帮助你顺利实现这一目标。如果在操作中遇到任何问题,欢迎在评论区留言交流。