尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Windows与Ubuntu服务器SSH密钥免密登录配置指南
1. 为什么需要SSH密钥免密登录每次连接远程服务器都要输入密码既麻烦又不安全。我在管理十几台Ubuntu服务器时深有体会——频繁输入密码不仅效率低下还容易因密码复杂度要求而输错。更严重的是密码登录可能遭受暴力破解攻击。SSH密钥认证完美解决了这些问题。它采用非对称加密技术本地生成密钥对公钥私钥将公钥部署到服务器后客户端用私钥自动完成认证。根据OpenSSH官方文档密钥认证的安全性远高于密码认证且支持完全自动化登录。2. 准备工作与环境确认2.1 系统环境要求Windows端Windows 10/11需启用OpenSSH客户端或安装Git for Windows自带SSH工具推荐使用Windows Terminal获得更好体验Ubuntu Server端已安装openssh-server默认包含在标准安装中确认sshd服务运行状态sudo systemctl status sshd2.2 网络连通性检查先测试基础连接是否正常# Windows PowerShell执行 Test-NetConnection 服务器IP -Port 22若显示TcpTestSucceeded : True则连通性正常。若失败需检查服务器防火墙规则sudo ufw allow 22云服务器的安全组配置本地网络是否限制22端口3. Windows端密钥生成与管理3.1 生成ED25519密钥对在PowerShell中执行ssh-keygen -t ed25519 -C your_emailexample.com参数说明-t ed25519使用更安全的ED25519算法比RSA更推荐-C添加注释通常用邮箱标识生成过程中会提示保存路径默认C:\Users\用户名\.ssh\id_ed25519设置密钥密码可选但推荐增加安全性重要安全提示私钥文件id_ed25519相当于数字身份证绝不能泄露建议设置强密码保护不要上传到云端或共享定期轮换密钥建议每6个月3.2 密钥文件权限设置Windows的OpenSSH对密钥文件权限敏感需执行icacls.exe $env:USERPROFILE\.ssh\id_ed25519 /inheritance:r /grant:r $env:USERNAME:(R) icacls.exe $env:USERPROFILE\.ssh\id_ed25519.pub /inheritance:r /grant:r $env:USERNAME:(R)这确保只有当前用户可读取密钥文件。4. 部署公钥到Ubuntu Server4.1 手动复制公钥内容查看并复制公钥cat ~/.ssh/id_ed25519.pub | clip这会直接将公钥内容复制到剪贴板。4.2 服务器端配置登录Ubuntu Server后mkdir -p ~/.ssh chmod 700 ~/.ssh echo 粘贴公钥内容 ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys关键权限说明.ssh目录必须为700drwx------authorized_keys必须为600-rw------- 权限错误会导致SSH拒绝密钥认证4.3 自动化部署方案推荐更高效的方式是使用ssh-copy-id# 如果使用Git Bash ssh-copy-id -i ~/.ssh/id_ed25519.pub usernameserver_ip若提示命令不存在可手动实现相同功能type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh usernameserver_ip mkdir -p ~/.ssh cat ~/.ssh/authorized_keys5. 连接测试与问题排查5.1 基础连接测试ssh -v usernameserver_ip添加-v参数显示详细调试信息首次连接会提示确认主机指纹。5.2 常见问题解决问题1仍提示输入密码检查项服务器/etc/ssh/sshd_config配置PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys文件权限重点检查.ssh和authorized_keysSELinux状态如有需要执行restorecon -Rv ~/.ssh问题2Permission denied (publickey)可能原因客户端未指定正确私钥服务器未读取到公钥解决方案ssh -i ~/.ssh/id_ed25519 usernameserver_ip问题3Host key verification failed解决方法# 清除旧指纹 ssh-keygen -R server_ip6. 高级配置与优化6.1 客户端配置文件简化在~/.ssh/config中添加没有则新建Host myserver HostName server_ip User username IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes之后只需执行ssh myserver即可连接。6.2 禁用密码登录提升安全性确认密钥登录正常后在服务器端sudo sed -i s/#PasswordAuthentication yes/PasswordAuthentication no/ /etc/ssh/sshd_config sudo systemctl restart sshd6.3 多密钥管理技巧当需要管理多组密钥时为不同服务器生成不同密钥在config文件中指定Host serverA IdentityFile ~/.ssh/id_serverA Host serverB IdentityFile ~/.ssh/id_serverB7. 安全最佳实践私钥保护使用密码加密私钥考虑使用硬件安全模块HSM或Windows证书存储服务器加固# 修改默认端口 sudo sed -i s/#Port 22/Port 2222/ /etc/ssh/sshd_config # 限制root登录 sudo sed -i s/#PermitRootLogin prohibit-password/PermitRootLogin no/ /etc/ssh/sshd_config监控与审计# 查看登录记录 sudo cat /var/log/auth.log | grep sshd定期轮换密钥每3-6个月生成新密钥从服务器删除不再使用的公钥8. 生产力工具集成8.1 VS Code远程开发安装Remote - SSH扩展按F1选择Remote-SSH: Connect to Host选择配置好的主机名遇到setting up ssh host卡顿时可尝试在设置中关闭Remote.SSH: Use Local Server使用更稳定的网络连接8.2 PowerShell脚本自动化创建连接脚本connect.ps1param( [string]$Server myserver ) $ErrorActionPreference Stop try { ssh $Server } catch { Write-Host 连接失败: $_ -ForegroundColor Red exit 1 }9. 密钥备份与迁移9.1 安全备份方案加密打包密钥Compress-Archive -Path ~\.ssh -DestinationPath ssh_backup.zip -EncryptionKey (ConvertTo-SecureString -String YourStrongPassword -AsPlainText -Force)将备份文件存储在加密USB或密码管理器中9.2 跨设备迁移步骤在新设备生成新密钥对将新公钥添加到服务器确认新密钥可登录后再移除旧公钥这种方法比直接复制私钥更安全避免了密钥泄露风险。10. 替代方案对比10.1 其他SSH客户端选项工具优点缺点OpenSSH (内置)原生支持无需安装功能较基础Git for Windows包含完整SSH工具链需要额外安装GitPuTTY图形界面友好使用.ppk格式密钥Windows Terminal现代化界面多标签支持只是终端外壳10.2 不同密钥算法比较算法安全性密钥长度兼容性RSA高≥2048位最好ECDSA很高256位较好ED25519最高256位较新系统支持实测建议优先使用ED25519遇到兼容问题再考虑RSA。
RELATED

相关推荐

2025届必备的AI写作工具解析与推荐

2025届必备的AI写作工具解析与推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 专门用于AI写作的工具, 正一点一点地步向, 成为内容创作者、营销人员跟企业文案团队的重要辅…

📅 2026/10/7 22:39:41
能力被迫升级的SOP的庖丁解牛

能力被迫升级的SOP的庖丁解牛

真正的能力提升,往往不是来自舒服的环境,而是来自现实提出了一个你当前能力无法解决的问题。 很多人的能力长期停滞: 不是因为不努力。 而是: 当前环境没有逼迫他突破原有能力边界。 例如: 一个程序员: …

📅 2026/9/14 19:07:45
企业级AI智能体部署框架OpenAI Presence:从私有化部署到生产实践

企业级AI智能体部署框架OpenAI Presence:从私有化部署到生产实践

这次我们来看一个面向企业生产环境的AI智能体平台——OpenAI Presence。这个名字听起来可能有点抽象,但它的目标非常明确:解决AI智能体从“玩具”到“工具”的最后一公里问题。简单说,它不是一个新的大模型,而是一个让现有大模型&…

📅 2026/8/14 16:08:32
MORE NEWS

更多资讯

📰

Sapling 的 Indexed Log:一份从 Revlog 到 Append-Only 索引存储的设计解析

开发工具CLI后端 【免费下载链接】sapling A Scalable, User-Friendly Source Control System. 项目地址: https://gitcode.com/gh_mirrors/sa/sapling 点击查看 免费下载 导读 Indexed Log(索引日志)是 Sapling 源码库(eden/sc…

📰

CouchDB 集群内部 RPC 机制深度解析:rexi 分布式调用框架的原理、源码与配置

数据库文档数据库后端 【免费下载链接】couchdb Seamless multi-primary syncing database with an intuitive HTTP/JSON API, designed for reliability 项目地址: https://gitcode.com/gh_mirrors/co/couchdb 点击查看 免费下载 本文基于 Apache CouchDB 仓库中的…

📰

PufferLib Bat 环境耳方向性(Ear Directivity)研究:从蝙蝠声学生物学到低成本 per-ear 增益模型的实现指南

强化学习深度学习人工智能 【免费下载链接】PufferLib Puffing up reinforcement learning 项目地址: https://gitcode.com/gh_mirrors/pu/PufferLib 点击查看 免费下载 PufferLib 的 ocean/bat/ 是一个以蝙蝠回声定位为核心的强化学习环境:蝙蝠智能体通…

📰

12.【Linux系统编程】动静态库制作与使用

目录1. 库的概念2. 静态库2.1 静态库的生成2.2 静态库的使用3. 动态库3.1 动态库生成3.2 动态库的使用3.3 库运行搜索路径3.3.1 简单解释3.3.2 详细解释(了解)4. 动静态库补充5. 使用外部库(不重要)1. 库的概念 库是写好的现有的…

📰

Webiny event-handler-aws 的 AwsLambdaContext 与 AwsLambdaEvent:基于 DI 的 Lambda 运行时抽象实战指南

CMS后端前端 【免费下载链接】webiny-js Open-source, self-hosted CMS platform on AWS serverless (Lambda, DynamoDB, S3). TypeScript framework with multi-tenancy, lifecycle hooks, GraphQL API, and AI-assisted development via MCP server. Built for developers at…

📰

现代 JavaScript 教程实战:用 cubic-bezier 让 CSS 尺寸动画“跳脱“边界(飞机缩放回弹动画)

文档教程前端 【免费下载链接】zh.javascript.info 现代 JavaScript 教程(The Modern JavaScript Tutorial),以最新的 ECMAScript 规范为基准,通过简单但足够详细的内容,为你讲解从基础到高阶的 JavaScript 相关知识。…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬