ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Linux SSH 使用与免密登录全面指南

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。 感谢阅读想了解更多 我的博客网站 | 记录思考分享干货 我的个人主页 | 关于我、开源项目
返回列表