Windows系统下OpenSSH的部署、配置与连接实战指南
1. Windows系统为什么需要OpenSSH作为一个常年和服务器打交道的运维老兵我见过太多人用第三方SSH工具连接Linux服务器时手忙脚乱的样子。其实从Windows 10 1809版本开始微软就内置了OpenSSH这个神器再也不用满世界找PuTTY这类第三方工具了。想象一下这样的场景你正在客户现场调试设备突然需要紧急登录服务器修改配置但发现没带常用工具包——这时候系统自带的OpenSSH就是救命稻草。OpenSSH在Windows中的实现包含完整的客户端和服务端组件。客户端ssh.exe可以连接任何支持SSH协议的设备从Linux服务器到网络设备服务端sshd.exe则能把你的Windows电脑变成SSH服务器。我去年给某医院部署远程维护系统时就是靠这个功能实现了CT设备的远程诊断医护人员再也不用抱着笔记本满楼跑了。2. 安装前的必要检查2.1 系统版本确认在开始安装前建议先按WinR输入winver查看系统版本。我遇到过不少同事在Windows 7上折腾半天才发现根本不支持的情况。目前支持的最低版本是Windows 10 1809内部版本17763Windows Server 2019如果你看到版本号低于这些数字建议先进行系统更新。上周帮朋友装机时就发现他用的LTSC版本卡在1803更新后问题迎刃而解。2.2 PowerShell版本检测打开PowerShell输入$PSVersionTable.PSVersion这个命令会返回类似下面的结果Major Minor Build Revision ----- ----- ----- -------- 5 1 19041 4412重点看Major版本需要≥5。我在给一些老工业设备做升级时发现它们还停留在PowerShell 2.0时代这时候需要先运行Install-WindowsFeature -Name PowerShell-ISE2.3 管理员权限验证执行这个命令会返回True或False(New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)如果返回False可以右键点击PowerShell选择以管理员身份运行。有次我在客户现场调试时发现即使使用管理员账户也会返回False后来发现是组策略限制了权限这种情况需要联系域管理员。3. 安装与卸载全流程3.1 客户端安装实战先查看当前安装状态Get-WindowsCapability -Online | Where-Object Name -like OpenSSH*如果看到State显示NotPresent说明需要安装。安装客户端的命令是Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0安装完成后在CMD输入ssh应该能看到帮助信息。有个常见坑点是企业网络可能会拦截Windows更新服务导致安装失败。这时候可以尝试Set-Service -Name wuauserv -StartupType Manual Start-Service wuauserv3.2 服务端安装要点安装服务端的命令类似Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0但服务端安装后还需要额外配置。我建议先设置防火墙规则New-NetFirewallRule -Name sshd -DisplayName OpenSSH Server (sshd) -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22遇到过有同事安装后无法连接折腾半天才发现是Windows防火墙拦截了22端口。3.3 卸载操作指南卸载客户端Remove-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0卸载服务端前建议先停止服务Stop-Service sshd Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0注意卸载服务端不会自动删除已生成的密钥文件它们通常保存在$env:ProgramData\ssh目录下。4. 服务配置与优化4.1 基础服务管理启动SSH服务的标准命令Start-Service sshd Set-Service -Name sshd -StartupType Automatic但实际部署时我更喜欢用更可靠的方式sc.exe config sshd start auto sc.exe start sshd因为有些Windows Server版本对PowerShell的Set-Service命令支持不太稳定。4.2 配置文件调整主配置文件路径C:\ProgramData\ssh\sshd_config建议修改这几个关键参数PasswordAuthentication yes PermitRootLogin prohibit-password MaxAuthTries 3 LoginGraceTime 30修改后需要重启服务Restart-Service sshd曾经有台服务器被暴力破解就是因为没设置MaxAuthTries限制尝试次数。4.3 密钥认证配置生成密钥对ssh-keygen -t ed25519把公钥上传到服务器type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh userhost mkdir -p ~/.ssh cat ~/.ssh/authorized_keys比起密码认证密钥方式安全得多。去年有家客户公司内网被渗透就是因为多个服务器共用相同密码。5. 连接实战与排错5.1 基础连接命令典型连接格式ssh usernamehostname如果是域环境ssh domain\usernamehostname第一次连接时会提示确认指纹输入yes即可。我习惯先单独验证指纹ssh-keyscan hostname $env:USERPROFILE\.ssh\known_hosts5.2 高级连接参数指定端口号ssh -p 2222 userhost启用端口转发ssh -L 3389:localhost:3389 userhost这个技巧在我远程协助客户时特别有用可以把内网机器的RDP端口映射到本地。5.3 常见错误处理连接超时检查服务是否运行Get-Service sshd验证防火墙规则Get-NetFirewallRule -Name sshd认证失败临时启用日志Start-Transcript -Path C:\ssh_log.txt查看详细错误ssh -v userhost中文乱码 在客户端添加配置Host * SendEnv LANG LC_* ServerAliveInterval 60
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2428326.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!