【环境配置】Windows 配置 SSH 免密登录 Ubuntu服务器

发布时间:2026/10/4 7:28:18
【环境配置】Windows 配置 SSH 免密登录 Ubuntu服务器 本文记录如何在 Windows 10/11 上使用 OpenSSH通过密钥免密登录 Ubuntu 服务器。文中统一使用192.0.2.10作为服务器示例地址。该地址属于文档示例专用地址实际操作时应替换为自己的服务器 IP。一、准备条件开始之前需要具备一台 Windows 10 或 Windows 11 电脑一台可以通过 SSH 访问的 Ubuntu 服务器Ubuntu 服务器的用户名和密码或其他可用的初始登录方式服务器 SSH 端口本文假设为默认端口22。本文示例信息如下服务器地址192.0.2.10 登录用户名ubuntu SSH 端口22 快捷名称ubuntu-server二、确认 Windows 已安装 OpenSSH打开 PowerShell执行ssh-V如果输出中包含OpenSSH_for_Windows说明 SSH 客户端已经安装可以继续下一步。如果提示无法识别ssh命令以管理员身份打开 PowerShell然后执行Add-WindowsCapability-Online-Name OpenSSH.Client~~~~0.0.1.0安装完成后关闭并重新打开 PowerShell。三、检查服务器端口是否可访问执行Test-NetConnection192.0.2.10-Port 22如果结果中出现以下内容说明网络和 SSH 端口基本正常TcpTestSucceeded : True如果结果为False应检查服务器地址是否正确SSH 端口是否为22服务器和云平台防火墙是否允许该端口Ubuntu 上的 SSH 服务是否已经启动当前网络能否访问服务器。四、先测试密码登录执行ssh ubuntu192.0.2.10第一次连接时SSH 可能显示服务器公钥指纹并询问是否继续Are you sure you want to continue connecting (yes/no/[fingerprint])?应先确认显示的服务器指纹可信。确认后输入yes随后输入 Ubuntu 上ubuntu用户的密码。输入密码时屏幕不会显示字符这是正常现象。登录成功后执行以下命令退出服务器exit如果无法完成密码登录需要先解决用户名、密码、端口或服务器 SSH 配置问题再继续安装公钥。五、生成 SSH 密钥为了避免覆盖电脑上已有的默认密钥这里为目标服务器创建一套单独的 Ed25519 密钥ssh-keygen-t ed25519-f$env:USERPROFILE\.ssh\id_ed25519_ubuntu_server-C$env:USERNAME$env:COMPUTERNAME随后会询问是否设置私钥口令Enter passphrase (empty for no passphrase):如果希望整个连接过程完全无提示连续按两次回车使用空口令如果电脑可能被他人使用建议设置私钥口令并结合ssh-agent使用以提高私钥安全性。命令会生成两个文件私钥%USERPROFILE%\.ssh\id_ed25519_ubuntu_server 公钥%USERPROFILE%\.ssh\id_ed25519_ubuntu_server.pub私钥必须妥善保管不能发送给他人也不能复制到服务器。需要安装到服务器的是以.pub结尾的公钥。六、将公钥安装到 Ubuntu 服务器在 PowerShell 中执行Get-Content$env:USERPROFILE\.ssh\id_ed25519_ubuntu_server.pub|ssh ubuntu192.0.2.10umask 077; mkdir -p ~/.ssh; cat ~/.ssh/authorized_keys; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keys根据提示输入一次ubuntu用户的服务器密码。该命令会创建服务器端的~/.ssh目录将 Windows 公钥追加到~/.ssh/authorized_keys设置 OpenSSH 所要求的目录和文件权限。七、测试密钥登录明确指定刚生成的私钥进行测试ssh-i$env:USERPROFILE\.ssh\id_ed25519_ubuntu_server-o IdentitiesOnlyyes ubuntu192.0.2.10如果能够直接进入服务器并且没有要求输入 Ubuntu 用户密码说明免密登录已经配置成功。这里的“免密”是指不再输入 Ubuntu 账户密码。如果生成密钥时设置了私钥口令SSH 仍可能要求输入该口令。八、配置 SSH 快捷名称为了避免每次输入服务器地址、用户名和私钥路径可以编辑 Windows SSH 配置文件notepad$env:USERPROFILE\.ssh\config如果文件不存在记事本会询问是否创建。写入以下内容Host ubuntu-server HostName 192.0.2.10 User ubuntu Port 22 IdentityFile ~/.ssh/id_ed25519_ubuntu_server IdentitiesOnly yes保存后可以使用快捷名称登录ssh ubuntu-server也可以通过快捷名称复制文件。例如将本地的example.txt上传到 Ubuntu 用户的主目录scp.\example.txt ubuntu-server:~/九、非默认 SSH 端口如果服务器使用端口2222测试连接时应执行ssh-p 2222 ubuntu192.0.2.10安装公钥时也需要指定端口Get-Content$env:USERPROFILE\.ssh\id_ed25519_ubuntu_server.pub|ssh-p 2222 ubuntu192.0.2.10umask 077; mkdir -p ~/.ssh; cat ~/.ssh/authorized_keys; chmod 700 ~/.ssh; chmod 600 ~/.ssh/authorized_keysSSH 配置则修改为Host ubuntu-server HostName 192.0.2.10 User ubuntu Port 2222 IdentityFile ~/.ssh/id_ed25519_ubuntu_server IdentitiesOnly yes十、常见问题排查1. 提示Permission denied (publickey)常见原因包括公钥没有正确写入~/.ssh/authorized_keys登录用户名错误指定了错误的私钥服务器端 SSH 服务禁止公钥认证Ubuntu 用户主目录或.ssh目录权限不正确。如果仍能通过密码或服务器控制台登录可以在 Ubuntu 上执行mkdir-p~/.sshchmod700~/.sshchmod600~/.ssh/authorized_keyschown-R$(id-un):$(id-gn)~/.ssh然后在 Windows 上开启详细日志重新连接ssh-vvv ubuntu-server重点查看客户端是否加载了正确的私钥以及服务器是否接受对应公钥。2. 提示Connection timed out这通常是网络、路由或防火墙问题。重新检查端口Test-NetConnection192.0.2.10-Port 223. 提示Connection refused这通常意味着目标地址可以访问但对应端口没有 SSH 服务监听。需要检查 SSH 端口并在 Ubuntu 服务器上检查服务状态sudosystemctl statusssh4. 提示服务器主机密钥发生变化如果出现REMOTE HOST IDENTIFICATION HAS CHANGED不要直接忽略或盲目删除记录。应先通过服务器控制台或管理员确认服务器是否重装、IP 是否被重新分配并核对新的主机密钥指纹避免遭遇中间人攻击。5. 仍然要求输入 Ubuntu 用户密码可以显式指定私钥排除配置问题ssh-i$env:USERPROFILE\.ssh\id_ed25519_ubuntu_server-o IdentitiesOnlyyes ubuntu192.0.2.10如果该命令可以免密登录说明问题通常位于%USERPROFILE%\.ssh\config需要检查Host、HostName和IdentityFile。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询