用 SSH 远程登录 Windows 10 的 Powershell

本贴最后更新于 1528 天前,其中的信息可能已经时过境迁

远程登录 Windows 10 的 Powershell

安装 OpenSSH

一般 Windows 会默认安装 OpenSSH,如果没有,管理员身份启动 PowerShell,执行以下操作:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

# 上面这条命令可能会返回这样的结果:

Name  : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

# 根据上面的结果,我们得到了服务端和客户端的名字, 现在用下面两条命令分别安装客户端和服务端:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

# 两条命令应该会返回这样的结果:

Path          :
Online        : True
RestartNeeded : False

SSH 服务器的初始配置

管理员身份启动 PowerShell,执行以下指令:

# 先启动 sshd
Start-Service sshd
# 这条命令是可选,但是推荐的,可以让 sshd 自动启动:
Set-Service -Name sshd -StartupType 'Automatic'
# 接下来确认一下防火墙规则,允许ssh通过上面的安装步骤应该已经自动创建了,不过保险起见,还是要查一下:
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

权限设置

AuthorizedKeysFile

默认值为用户主目录下的 .ssh/authorized_keys .ssh/authorized_keys2

SyslogFacility

日志在 %programdata%\ssh\logs

为 Win10 的 OpenSSH 配置默认 shell:

Windows 初始默认 Shell 是 cmd,Windows 还包括了 PowerShell 和 Bash。

先确认 OpenSSH 安装文件夹位于系统路径上,对于 windows,默认安装位置是:C:Windows\System32\openssh

cmd 中 path 和 PowerShell 中 $env:path 可以显示当前路径。

在注册表中,将 PowerShell 的完整路径添加到 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH 中的 DefaultShell 字符串值中。

先确保注册表中存在 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\OpenSSH 这个路径,然后可以在 PowerShell 中用以下命令将默认 shell 设为 PowerShell:

New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -PropertyType String -Force

登录

确保在同一网络下,在你的 Termux 中就可以登录 Win10 的 PowerShell 了:

ssh username@your_pc_host -p 22

你可以用密码或密钥的方式登录。

参考来源:

Windows 中的 OpenSSH

安装适用于 Windows Server 2019 和 Windows 10 的 OpenSSH

适用于 Windows 10 1809 和 Server 2019 的 OpenSSH 服务器配置

  • Shell

    Shell 脚本与 Windows/Dos 下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比 Windows 下的批处理更强大,比用其他编程程序编辑的程序效率更高,因为它使用了 Linux/Unix 下的命令。

    122 引用 • 73 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...