如何确认远程端口号,方法很多,这里说3种
最直接的,powershell执行
Get-ItemProperty -Path HKLM:SYSTEMCurrentControlSetControlTermin*ServerWinStationsRDP*CP -Name PortNumber | select PortNumber
1、先确定TermService的pid,再通过pid确认远程端口
tasklist /svc|findstr "Term"
netstat -ano|findstr "进程号"
2、powershell来确认,原理跟上面一样
$rdppid=(get-wmiobject win32_service | where { $_.name -eq 'termservice'}).processID
netstat -ano|findstr $rdppid|findstr LISTENING
3、Reg query来查询,16进制d3d是10进制的3389
得到的值转换成10进制即可
set /a a=0xd3d
reg query "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" /s|findstr /c:"PortNumber" reg query "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWdsrdpwdTdstcp" /s|findstr /c:"PortNumber" reg query "HKEY_LOCAL_MACHINESYSTEMControlSet001ControlTerminal ServerWinStationsRDP-Tcp" /s|findstr /c:"PortNumber" reg query "HKEY_LOCAL_MACHINESYSTEMControlSet001ControlTerminal ServerWdsrdpwdTdstcp" /s|findstr /c:"PortNumber" reg query "HKEY_LOCAL_MACHINESYSTEMControlSet002ControlTerminal ServerWinStationsRDP-Tcp" /s|findstr /c:"PortNumber" reg query "HKEY_LOCAL_MACHINESYSTEMControlSet002ControlTerminal ServerWdsrdpwdTdstcp" /s|findstr /c:"PortNumber"
如何修改远程端口号,方法也很多
1、参考微软官网文档:(适用2008R2/Win7以上的系统)
https://docs.microsoft.com/en-GB/windows-server/remote/remote-desktop-services/clients/change-listening-port
举例,把默认远程端口3389改为33899
首先,启用远程,
(gwmi -class win32_terminalservicesetting -namespace "rootcimv2terminalservices").setallowtsconnections(1)
netstat -ano|findstr :3389
然后改远程端口
$portvalue = 33899
Set-ItemProperty -Path 'HKLM:SYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp' -name "PortNumber" -Value $portvalue
powershell -c "& { restart-service termservice -force}"
netstat -ano|findstr :33899
后面2句是在防火墙里放行的(命令不适用2008R2/win7的powershell2.0),如果防火墙是关闭状态这2句命令就无需执行了,防火墙关闭状态下执行会报错。
New-NetFirewallRule -DisplayName 'RDPPORTLatest-TCP-In' -Profile 'Public' -Direction Inbound -Action Allow -Protocol TCP -LocalPort $portvalue
New-NetFirewallRule -DisplayName 'RDPPORTLatest-UDP-In' -Profile 'Public' -Direction Inbound -Action Allow -Protocol UDP -LocalPort $portvalue
2、通过reg add命令修改
举例,改为33899
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWinStationsRDP-Tcp" /v "PortNumber" /t REG_DWORD /d 33899 /f
reg add "HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlTerminal ServerWdsrdpwdTdstcp" /v "PortNumber" /t REG_DWORD /d 33899 /f
reg add "HKEY_LOCAL_MACHINESYSTEMControlSet001ControlTerminal ServerWinStationsRDP-Tcp" /v "PortNumber" /t REG_DWORD /d 33899 /f
reg add "HKEY_LOCAL_MACHINESYSTEMControlSet001ControlTerminal ServerWdsrdpwdTdstcp" /v "PortNumber" /t REG_DWORD /d 33899 /f
reg add "HKEY_LOCAL_MACHINESYSTEMControlSet002ControlTerminal ServerWinStationsRDP-Tcp" /v "PortNumber" /t REG_DWORD /d 33899 /f
reg add "HKEY_LOCAL_MACHINESYSTEMControlSet002ControlTerminal ServerWdsrdpwdTdstcp" /v "PortNumber" /t REG_DWORD /d 33899 /f
3、参考3389 Windows 远程端口修改工具
所有方法,改完远程端口后,都需要重启远程服务
重启远程服务的命令是powershell -c "& { restart-service termservice -force}"
但是重启远程服务容易出现意外情况,即重启远程服务是先关闭后开启的过程,跟重启机器类似,是先关机后开机的过程,如果前半程卡住,后半场是没辙的。
为了确保万无一失,建议修改远程端口后重启机器。
重启后重新mstsc时注意加端口号,当然了,如果用不明白mstsc,有个简单软件(本质上还是调用的底层mstsc),但是非常简单、好用,还能在本地电脑上记住密码,以后双击就能远程上,非常方便。