Windows service开启ssh服务,免密登录
安装ssh客户端、服务端
安装完成后,在搜索框中输入cmd,在弹出窗口选择【以管理员身份运行】。执行“net start sshd”命令,启动SSH服务。
同时按下【WIN】和【R】键,打开【运行】窗口,输入“services.msc”,打开服务管理控制台。
在【Windows服务管理器】页面,找到“OpenSSH SSH Server”,双击该选项,在弹出的属性窗口页面,把启动类型配置为“自动”。
# 启动sshd服务 Start-Service sshd # 将sshd服务设置为自动启动,若不设置需要在每次重启后重新开启sshd Set-Service -Name sshd -StartupType 'Automatic' # 确认防火墙规则,一般在安装时会配置好 Get-NetFirewallRule -Name *ssh* # 若安装时未添加防火墙规则"OpenSSH-Server-In-TCP",则通过以下命令添加 New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22
# 确保服务器上存在.ssh 文件夹,若不存在则使用下面命令创建 ssh username@ip mkdir C:\Users\username\.ssh\ #通过scp将本地的公钥上传到服务器上并重命名为authorized_keys,注意此方法会覆盖原有authorized_keys scp C:\Users\username\.ssh\id_rsa.pub user1@ip:C:\Users\username\.ssh\authorized_keys
# 远程通过ACL更改文件权限 ssh --% user1@ip icacls.exe "C:\Users\username\.ssh\authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
#在服务器端修改authorized_keys文件权限 icacls.exe "C:\Users\username\.ssh\authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
在Windows OpenSSH中,默认的授权密钥存放位置为ProgramData\ssh\administrators_authorized_keys,此位置对应为管理用户权限。因此需要修改默认授权文件位置。通过文本编辑器(推荐vscode)打开ProgramData\ssh\sshd_config,修改以下条目
#允许公钥授权访问,确保条目不被注释 PubkeyAuthentication yes #授权文件存放位置,确保条目不被注释 AuthorizedKeysFile .ssh/authorized_keys #可选,关闭密码登录,提高安全性 PasswordAuthentication no #注释掉默认授权文件位置,确保以下条目被注释 #Match Group administrators # AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
在PowerShell(管理员)中重启sshd服务
#重启sshd,需要管理员权限 Restart-Service sshd
设置端口转发 C:\ProgramData\ssh
AllowAgentForwarding yes AllowTcpForwarding yes GatewayPorts yes X11Forwarding yes
卸载方式:!!!
# 卸载 OpenSSH 客户端
Remove-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
# 卸载 OpenSSH 服务端
Remove-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
相关来源:
TryEverything