首页 自动驾驶

解锁 SSH 免密登录:一步到位保姆级教程,告别繁琐密码输入

分类:自动驾驶
字数: (9742)
阅读: (2883)
内容摘要:解锁 SSH 免密登录:一步到位保姆级教程,告别繁琐密码输入,

每次 ssh 登录 Linux 服务器都要输入密码,时间一长确实让人抓狂。尤其是运维人员需要频繁登录服务器进行操作,效率大大降低。本文将手把手教你如何实现 Linux 的 SSH 免密登录,让你彻底摆脱密码的束缚,畅享丝滑体验。

问题场景重现:密码的痛点

设想一下,你正在使用 scp 命令向远程服务器传输文件:

scp local_file.txt user@remote_host:/path/to/destination/

每次执行都需要输入密码,非常不方便。如果需要批量操作多台服务器,密码输入更是噩梦。此外,频繁输入密码也存在一定的安全风险,容易被键盘记录器窃取。

解锁 SSH 免密登录:一步到位保姆级教程,告别繁琐密码输入

底层原理深度剖析:公钥私钥的奥秘

SSH 免密登录的核心在于非对称加密算法,也就是公钥和私钥。简单来说:

  1. 你需要在本地生成一对公钥和私钥。
  2. 将公钥上传到远程服务器上的 ~/.ssh/authorized_keys 文件中。
  3. 当你尝试通过 ssh 登录时,服务器会使用公钥加密一段随机数据发送给客户端。
  4. 客户端使用私钥解密这段数据,并将解密结果发送给服务器。
  5. 服务器验证解密结果是否正确,如果正确则允许登录,无需密码。

这种方式安全性很高,因为私钥保存在本地,即使公钥泄露也不会导致安全问题。

解锁 SSH 免密登录:一步到位保姆级教程,告别繁琐密码输入

具体配置解决方案:一步到位

下面是实现 SSH 免密登录的详细步骤:

  1. 生成密钥对:

    解锁 SSH 免密登录:一步到位保姆级教程,告别繁琐密码输入

    在本地终端执行以下命令:

    ssh-keygen -t rsa -b 4096  # 生成 RSA 密钥,-b 指定密钥长度,通常 4096 位更安全
    

    这个命令会提示你输入密钥保存路径和密码(passphrase)。如果不想设置密码,直接回车即可。默认情况下,密钥保存在 ~/.ssh 目录下,私钥是 id_rsa,公钥是 id_rsa.pub

    解锁 SSH 免密登录:一步到位保姆级教程,告别繁琐密码输入
  2. 上传公钥到远程服务器:

    可以使用 ssh-copy-id 命令简化上传过程:

    ssh-copy-id user@remote_host # 将公钥复制到远程服务器,需要输入密码
    

    ssh-copy-id 命令会自动创建 .ssh 目录(如果不存在)并将公钥追加到 authorized_keys 文件中。如果服务器没有 ssh-copy-id 命令,也可以手动上传公钥并添加到 authorized_keys 文件:

    # 本地终端
    scp ~/.ssh/id_rsa.pub user@remote_host:/tmp/id_rsa.pub.tmp # 上传公钥到临时目录
    
    # 远程服务器
    mkdir -p ~/.ssh # 创建 .ssh 目录,如果不存在
    cat /tmp/id_rsa.pub.tmp >> ~/.ssh/authorized_keys # 将公钥追加到 authorized_keys 文件
    chmod 600 ~/.ssh/authorized_keys # 设置 authorized_keys 文件权限
    rm /tmp/id_rsa.pub.tmp # 删除临时文件
    
  3. 测试免密登录:

    ssh user@remote_host # 尝试 SSH 登录,应该不再需要输入密码
    

实战避坑经验总结

  • 权限问题: .ssh 目录和 authorized_keys 文件的权限必须正确。.ssh 目录的权限必须是 700authorized_keys 文件的权限必须是 600。可以使用 chmod 命令修改权限。
  • SELinux 或 AppArmor: 如果服务器启用了 SELinux 或 AppArmor,可能会阻止 SSH 免密登录。需要配置 SELinux 或 AppArmor 允许 SSH 访问。
  • authorized_keys 文件格式: 确保 authorized_keys 文件中的每一行都只包含一个公钥,并且没有多余的空格或换行符。尤其注意Windows换行符的问题,上传后可能导致无法登录。可以使用 dos2unix 命令转换文件格式。
  • SSH 配置: 检查 /etc/ssh/sshd_config 文件,确保 PubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keys 没有被注释掉。
  • 禁用密码登录: 为了进一步提高安全性,可以禁用密码登录。在 /etc/ssh/sshd_config 文件中设置 PasswordAuthentication no 并重启 sshd 服务。但是需要确保已经配置好免密登录,否则将无法登录服务器。重启 sshd 服务可以使用 systemctl restart sshd 命令。
  • 考虑使用跳板机: 对于复杂的网络环境,可以考虑使用跳板机进行统一管理。通过跳板机可以简化 SSH 连接,并提高安全性。可以使用 ProxyJump 配置项来设置跳板机。

通过本文的详细教程,相信你已经掌握了 Linux SSH 免密登录的配置方法。告别繁琐的密码输入,让你的工作效率更上一层楼!在实际使用中,根据服务器的具体配置和安全策略进行调整,祝你使用愉快!

解锁 SSH 免密登录:一步到位保姆级教程,告别繁琐密码输入

转载请注明出处: 代码一只喵

本文的链接地址: http://m.acea4.store/blog/856345.SHTML

本文最后 发布于2026-04-07 05:36:18,已经过了20天没有更新,若内容或图片 失效,请留言反馈

()
您可能对以下文章感兴趣
评论
  • 摆烂大师 5 天前
    手动上传公钥那段非常实用,我的服务器上没有 ssh-copy-id 命令,正好用上了。
  • 绿豆汤 6 天前
    权限问题确实是个坑,之前搞了好久才发现是权限不对。