现在许多同学(包括我)已经陆续回家躲避疫情了,在家能够继续远程搞学术吗?答案是肯定的。我在此介绍一下我远程连接的三种途径:远程桌面、ssh、跳板机,主要针对家里电脑如何连接上Win10系统的工作电脑
此攻略是我通过家里电脑远程桌面连接到实验室工作电脑上编写的
个人建议:由于网络原因,远程桌面会有不可避免的延迟,因此除了一定要通过图形化界面操作的程序之外,建议以ssh连接为主。对于写代码,强推VSCode的ssh插件
01.
远程桌面
远程桌面有很多第三方软件,比如向日葵等等,但是事实上Win10系统是自带远程桌面的,也拥有着更佳的使用体验
工作电脑端:开启远程桌面服务
工作电脑端:更改远程桌面端口号
去年开始,RVPN关闭了常用的端口的访问权限,包括远程桌面(3389)、ssh(22)等。因此即使打开了工作电脑的远程桌面服务,在家通过RVPN是依然无法连上远程桌面的默认端口的。不过所幸可以通过更改远程桌面端口号访问,可参考这篇攻略,通过修改注册表、修改防火墙等方式修改端口。为了避免端口号和常用端口撞车,我个人习惯使用五位数的自定义端口(65535以内!)
修改完之后可能需要重启电脑
攻略如下:
Windows修改远程桌面(RDP)的端口号
1.该示例适用于大部分的Windows平台
2.操作系统:Windows 10 专业版
3.远程桌面默认使用TCP协议,端口为3389
1.开启远程桌面
首先确保远程桌面功能已开启
控制面板>系统和安全>系统>高级系统设置,点击确定或应用生效
2. 修改端口
使用 Win + R 快捷键调出运行窗口,输入 regedit 打开系统注册表
修改第一处,进入
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\Wds\rdpwd\Tds\tcp,右击PortNumber,选择修改,默认端口为3389,新的端口按自己需求设置,这里设置为:19910
修改第二处,进入
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TerminalServer\WinStations\RDP-Tcp,同上,设置为同样的端口:19910
特别注意:如果系统开启了防火墙,仅通过以上的操作,重启电脑后,新的端口依然无法生效,此时防火墙中,远程桌面的入站规则端口还是3389
3. 修改远程桌面的入站规则
再次使用注册表,进入
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Defaults\FirewallPolicy\FirewallRules, 找到
RemoteDesktop-UserMode-In-TCP,右键修改,将包含原端口3389的数字修改为19910
进入
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules,同上,替换旧的端口为19910
打开控制面版,进入系统和安全 > Windows Defender 防火墙,选择高级设置,可在入站规则中,查看到远程桌面的本地端口已修改为19910
4. 使新的端口生效
有两种方式能使新的端口生效,第一种是直接重启电脑,另一种是重启相关的服务,操作如下:
使用 Win + R 调出运行窗口,输入 services.msc 打开服务,找到 Remote Desktop Services,重启动此服务
远程测试, Win + R 调出运行窗口, 输入 mstsc 打开远程桌面连接,以 ip:port 的格式填入远程地址
原文链接:
https://blog.csdn.net/zifengzwz/article/details/107132318
家里电脑:连接远程桌面!
Win10系统是自带远程桌面服务端的,可以通过搜索栏快速地搜索到:
这里的“计算机”填实验室工作电脑的“IP地址:自定义端口号”如:114.51.4.191:9810,代表IP地址为114.51.4.191,使用9810端口
“用户名”填登录的用户名,可以勾上下方的“保存凭据”(我的客户端GUI出了点bug只能看到小荷才露尖尖角,不过还是可以勾上滴)
接下来输入密码就可以登录进去了
注意:一台电脑的远程桌面和线下操作只能同时登入一次,远程桌面登入电脑之后,电脑本身就会锁屏了,如果解锁,远程桌面就会被踢下线。不过锁屏不影响电脑内程序的运行,可以放心下线
02.
ssh连接Win10电脑
工作电脑端:安装并开启OpenSSH服务
安装完成后,使用管理员权限打开cmd/powershell,输入net start sshd以开启ssh服务
设置开机自启
快捷键Win+R,输入services.msc,打开Win10服务设置
设置启动类型为“自动”
工作电脑端:更改ssh默认端口
和远程桌面一样,ssh的默认端口22也是被RVPN所屏蔽的,需要修改端口:
1.打开
C:\ProgramData\ssh\sshd_config,找到Port 22一行并将22替换为自定义端口号(如果没有这一行就往里面新增一行Port <port_number>)
2.需要修改防火墙端口权限:使用管理员权限打开powershell,输入New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort <port_number>
3.重启sshd服务,在管理员powershell/cmd中输入net stop sshd再输入net start sshd
家里电脑:连接ssh!
在家里电脑的控制台/VSCode等等输入ssh-p <port_number> <user_name>@<ip_address>就可以连接上啦!
(可选项)免密登录
ssh默认登录方式是密码认证,需要输密码,有点麻烦。可以通过公钥认证的方式,以进行免密登录
以下步骤中,如无特殊说明,均在工作电脑端操作
1.(家里电脑)生成ssh公钥:打开cmd/powershell,输入ssh-keygen,不用理会中间的询问一路按回车键,ssh公钥将生成在C:\Users<user_name>.ssh\id_rsa.pub内,这是一个文本文件
2.创建工作电脑上的认证公钥文件。如果工作电脑的登入用户是管理员,文件路径为
C:\ProgramData\ssh\administrators_authorized_keys;若非管理员,则为C:\Users\.ssh\authorized_keys。如果文件不存在,可以手动创建一个
3.将家里电脑的ssh公钥全文复制到工作电脑上的认证公钥文件内
4.设置认证公钥文件的正确权限。在管理员权限的powershell中输入命令
icacls.exe"C:\ProgramData\ssh\administrators_authorized_keys" /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"
接下来尝试一下ssh登入,是不是可以不用密码了?
Linux系统的ssh
Linux系统服务器一般自带ssh服务,不需要额外安装,更改端口/免密登录的操作和Win10端是大同小异的,只是文件路径的不同:
1.修改端口号在
/etc/ssh/sshd_config内完成
2.免密登录的认证公钥文件在~/.ssh/authorized_keys
03.
ssh跳板机连接服务器
有的实验室服务器只连接了实验室局域网,需要以工作电脑为跳板机,命令如下:
ssh-J <jump_username>@<jump_ip_address>:<jump_port> @<ip_address> <other_ssh_options>
其中以jump为前缀的都是跳板机(工作电脑)的信息,而username和ip_address则是服务器的信息。事实上,就相当于在原本连接实验室服务器的命令中间,新增一项-J <jump_username>@<jump_ip_address>:<jump_port>,其余命令照旧
设置快捷命令
嫌这一长串命令太长输入太麻烦?可以通过设置快捷命令的方式:在家里电脑上打开C:\Users<user_name>.ssh\config,输入这一串信息
HostName为服务器的IP地址,ProxyJump填上
<jump_username>@<jump_ip_address>:<jump_port>,User为服务器的登入用户;若服务器本身的ssh登入端口不是22,则还需要加入一行Port <port_id>
保存配置文件之后,就可以在家里电脑输入ssh jump,直接登上服务器,而不需要冗长的命令
如果希望免密登录,需要同时在跳板机和服务器上认证家里电脑的公钥