Linux SSH 使用与免密登录全面指南 文章目录1. SSH 工作原理与非对称加密2. SSH 基础连接命令3. SSH 免密登录配置标准四步法步骤 1在本地机器生成 SSH 密钥对步骤 2将公钥复制到远程服务器方法 A使用 ssh-copy-id 自动安装推荐最省心方法 B手动配置若远程机器没有 ssh-copy-id 工具步骤 3验证免密登录4. 高级技巧使用 ~/.ssh/config 简化配置5. 生产环境 SSH 安全加固规范6. 排查免密登录失败常见权限坑点7. 总结SSH (Secure Shell)是 Linux 系统中最核心的远程管理协议。它通过非对称加密公钥与私钥技术为终端会话、文件传输提供安全通道。无论是日常连接服务器还是构建 CI/CD 自动化部署、集群拉取代码掌握 SSH 的配置与免密登录都是必修课。1. SSH 工作原理与非对称加密SSH 免密登录基于非对称加密体系[ 本地客户端 (Client) ] [ 远程服务器 (Server) ] ┌────────────────────┐ ┌────────────────────┐ │ 私钥 (id_ed25519) │ (绝不泄露) │ │ └─────────┬──────────┘ │ ~/.ssh/ │ │ │ authorized_keys │ │ 发送连接请求 │ (存有客户端公钥) │ └───────────────────────────────│ │ └─────────┬──────────┘ │ 服务器用公钥加密随机质询 │ ┌──────────────────────────────────────────┘ ▼ ┌────────────────────┐ │ 本地用私钥解密并响应 │ └─────────┬──────────┘ │ 验证成功建立加密会话 └─────────────────────────────── [ 登录成功 ]私钥 (Private Key)存放在本地电脑~/.ssh/id_ed25519绝对不能泄露。公钥 (Public Key)存放在远程服务器~/.ssh/authorized_keys用于解密和身份校验。2. SSH 基础连接命令最基本的连接语法ssh [用户名][服务器IP或域名] -p [端口号]# 1. 默认连接使用 22 端口sshalex192.168.1.100# 2. 连接指定端口如果服务器修改了默认 SSH 端口如 2222ssh-p2222alex192.168.1.100# 3. 指定特定私钥文件进行连接ssh-i~/.ssh/my_custom_key alex192.168.1.100# 4. 在远程服务器上直接执行单条命令并返回结果无需保持交互sshalex192.168.1.100df -h3. SSH 免密登录配置标准四步法步骤 1在本地机器生成 SSH 密钥对打开本地终端执行以下命令生成密钥对。推荐算法强烈建议优先使用Ed25519算法比传统的 RSA 更安全、密钥更短且性能更好。# 优先推荐使用 Ed25519 算法生成可加上 -C 备注邮箱或主机名ssh-keygen-ted25519-Calexexample.com# 备选如果老旧系统不支持 ed25519使用 4096 位的 RSAssh-keygen-trsa-b4096-Calexexample.com执行后系统会提示保存路径默认在~/.ssh/目录下连按三次回车即可默认不设置私钥密码。步骤 2将公钥复制到远程服务器生成密钥后你需要将本地生成的公钥id_ed25519.pub添加到远程服务器的~/.ssh/authorized_keys文件中。方法 A使用ssh-copy-id自动安装推荐最省心# 格式ssh-copy-id -p [端口] [用户名][服务器IP]ssh-copy-id-p22alex192.168.1.100输入一次远程用户的密码后系统会自动帮你创建目录并配置权限。方法 B手动配置若远程机器没有ssh-copy-id工具# 一键读取本地公钥并通过管道写入远程 authorized_keyscat~/.ssh/id_ed25519.pub|sshalex192.168.1.100mkdir -p ~/.ssh chmod 700 ~/.ssh cat ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys步骤 3验证免密登录配置完成后再次尝试连接系统将不再提示输入密码而是直接登录sshalex192.168.1.1004. 高级技巧使用~/.ssh/config简化配置每次都输入ssh alex192.168.1.100 -p 2222 -i ~/.ssh/my_key非常繁琐。你可以在本地配置SSH 别名。创建并编辑本地的~/.ssh/config文件nano~/.ssh/config写入以下配置内容# 定义别名如 dev-server Host dev HostName 192.168.1.100 User alex Port 2222 IdentityFile ~/.ssh/id_ed25519 # 定义公司生产环境服务器 Host prod HostName prod.example.com User admin Port 22 IdentityFile ~/.ssh/prod_key设置保存后下次你只需输入极其简短的别名即可直接连接sshdev5. 生产环境 SSH 安全加固规范在公网服务器中默认配置的 SSH 经常会遭遇密码爆破攻击。强烈建议修改/etc/ssh/sshd_config进行安全加固# 1. 打开服务器上的 SSH 服务配置文件sudonano/etc/ssh/sshd_config# 2. 做出如下安全改动Port2222# 修改默认 22 端口避开绝大部分通用扫描脚本PermitRootLogin no# 禁止 root 用户直接远程登录强制使用普通用户 sudo 提权PasswordAuthentication no# ⚠️ 彻底禁用密码登录强制要求使用 SSH 密钥登录PubkeyAuthenticationyes# 开启公钥认证# 3. 重载 SSH 服务配置使修改生效sudosystemctl reload sshd6. 排查免密登录失败常见权限坑点如果你已经配置了authorized_keys但系统依然要求输入密码90% 的原因是文件权限太开放导致 SSH 处于安全机制拒绝读取。请登录远程服务器严格检查并修复以下权限# 1. 用户家目录权限不能过大chmod750/home/alex# 2. .ssh 目录权限必须为 700chmod700/home/alex/.ssh# 3. authorized_keys 文件权限必须为 600chmod600/home/alex/.ssh/authorized_keys# 4. 确保文件所有者是当前用户而非 rootchown-Ralex:alex /home/alex/.ssh终极排查参数如果还是不行在本地连接时加上-v参数如ssh -v dev查看详细的握手日志与密钥匹配过程。7. 总结生成算法首选ssh-keygen -t ed25519。免密部署用ssh-copy-id userip最快。高效接入配置~/.ssh/config打造极简快捷命令。安全加固禁止密码登录 (PasswordAuthentication no) 修改默认端口 严格控制.ssh目录权限700和600。 感谢阅读想了解更多 我的博客网站 | 记录思考分享干货 我的个人主页 | 关于我、开源项目

相关新闻

最新新闻

LVGL环形无限循环滚动:数据不动,位置循环

LVGL环形无限循环滚动:数据不动,位置循环

如果你在小屏幕上做过嵌入式 GUI,大概率遇到过这样的需求:屏幕只有 800 像素宽,但你要展示的内容有 20 个分类,或者你需要在主界面上做一个轮播区域,让项目从右往左循环滚动。最直接的做法是用 LVGL 自带的可滚动对象&…

2026/8/31 10:14:55
Python操作MongoDB实战:pymongo从增删改查到索引优化

Python操作MongoDB实战:pymongo从增删改查到索引优化

这一篇是“100天精通Python”系列的第 40 天,主题非常直接:用 pymongo 操作 MongoDB 数据库,从安装、连接到增删改查,再到批量任务和索引优化,最后带上接口封装思路和常见问题排查。 MongoDB 是目前最常用的文档型 …

2026/8/31 10:14:55
六杆机构MATLAB运动学仿真:从建模到动画的完整课程设计指南

六杆机构MATLAB运动学仿真:从建模到动画的完整课程设计指南

机械原理课程设计里的“六杆机构 MATLAB 仿真”,几乎是每个机械类专业学生都要正面硬刚的一次作业。很多同学的卡点并不在机械原理本身,而是卡在“机构运动简图画完了、速度多边形也手算了两三个位置,结果题目要求整周仿真出位移、速度、加速…

2026/8/31 10:14:55
AdminLTE 完整指南:基于 Bootstrap 5 的免费后台管理模板,10 分钟上手

AdminLTE 完整指南:基于 Bootstrap 5 的免费后台管理模板,10 分钟上手

AdminLTE 完整指南:基于 Bootstrap 5 的免费后台管理模板,10 分钟上手 【免费下载链接】AdminLTE AdminLTE - Free admin dashboard template based on Bootstrap 5 项目地址: https://gitcode.com/GitHub_Trending/ad/AdminLTE AdminLTE 是一款基…

2026/8/31 10:14:55
两年网站设计灵感收集:从零构建可检索的设计资料库

两年网站设计灵感收集:从零构建可检索的设计资料库

连续收集将近两年的网站设计灵感,然后把成果以 Show HN 的形式放出来,这件事最值得看的点不在于收集了多少个页面,也不在于截图占了多少 GB,而在于一个普通人如何靠持续动作,从一堆零散收藏里沉淀出一套可以检索、可以…

2026/8/31 10:14:55
用 text-generation-webui 调多轮对话:从“聊三轮就崩“到“稳定 10+ 轮“的实战配置

用 text-generation-webui 调多轮对话:从“聊三轮就崩“到“稳定 10+ 轮“的实战配置

用 text-generation-webui 调多轮对话:从"聊三轮就崩"到"稳定 10 轮"的实战配置 【免费下载链接】textgen Open-source desktop app for local LLMs. Text, vision, tool-calling, OpenAI/Anthropic-compatible API. 100% private. 项目地址:…

2026/8/31 10:09:55