打算从今天开始,写一写我经常用的,有长时间使用经验的东西,与大家分享,就从mstsc
开始吧!
mstsc
应该是在Windows中,除了calc
、cmd
、notepad
、mspaint
,我使用率最高的系统软件了,它真的很好用。下面我们就来详细介绍一下mstsc
。
注意:由于本人没有用过Win8/Win8.1,因此本文基本上忽略了Win8。在本文中若没有特别说明使用的系统,则默认都是按Win10来操作。
1 开启计算机的远程桌面连接功能
打开系统属性,打开远程设置,选择“允许远程连接到此计算机”,但是不建议勾选“仅允许运行使用网络级别身份验证的远程桌面的计算机连接”,如果勾选则WinXP等系统则不能远程控制该计算机。Win7的选项有些不同,但其实是一个意思,建议选择“允许运行任意版本远程桌面的计算机连接”。
另外,上面的这个远程协助跟mstsc没关系,不用勾选。这个远程协助指的是msra
这个命令。
想要计算机能被远程,需要开启Windows防火墙。需要注意的是,一定要在防火墙中给“远程桌面”设置允许通过。如果你设置只允许它在专用网络通过防火墙,则一定要注意计算机当前使用的网络是专用还是公用,如果是公用则需改为专用。不过最简单的还是允许它专用和公用都能通过。(Win7中的家庭和工作都属于专用)
注意:一定要关闭远程计算机的自动休眠功能!
2 运行mstsc
按Win+R
,运行mstsc
。输入IP,点击连接,之后输入用户名和密码即可。可勾选保存凭据。
3 远程设置
分辨率、颜色质量、性能这些都很常用,下面说一些不是很常用的设置。
- 在“显示”选项卡中,可以设置全屏显示时是否显示连接栏。如果设置不显示,那么在进入远程界面几秒后连接栏就会消失。想要调出连接栏以关闭远程,就得用快捷键。
- 在“本地资源”选项卡中,可以设置远程计算机可以使用的本地资源。默认剪贴板是开启的,也就是说,远程计算机和本地计算机共享剪贴板,可以复制文字、文件等。另外还有一个容易被忽视的功能,点击详细信息,里面可以将驱动器映射到远程计算机,可以是硬盘,也可以是U盘。这样远程计算机就能直接访问本地设备了。
4 快捷键
CTRL+ALT+END
: 可发送CTRL+ALT+DELETE
到远程计算机。直接按CTRL+ALT+DELETE
操作的是本地计算机。CTRL+ALT+HOME
: 如果设置了“全屏显示时不显示连接栏”,可用此快捷键调出连接栏以关闭远程。注意:Win7以下不支持。Win7以下设备可按下CTRL+ALT+DELETE
,选择任务管理器,这样可以调出开始菜单,在任务栏中关闭,或者直接在任务管理器中关闭,也是可以的。
更多快捷键可以参考微软官方文档。
另外,如果想全屏时最小化远程窗口,比较难,在这里有相关讨论,目前我还没有找到比较合适的解决方案。
5 修改端口
远程桌面连接默认使用3389端口,如果想修改默认的端口,需运行regedit
进入注册表,修改HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp
和HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
的PortNumber
键值即可。修改时要注意使用的是十进制还是十六进制方式。
修改端口后,在远程输入IP时,就要显式指定端口号,形如ip:port
。
若使用IPV6地址进行远程,IPV6地址必须使用中括号,例如[2001:da8:214:1086:747c:abcd:efgh:1c6a]:22
。如果不修改端口,IPV6地址可以不加中括号。
6 WinXP的一些细节
- 使用WinXP进行远程时,是进入远程计算机界面进行登录操作(类似进入系统前的登录界面),因此可以看到远程计算机有哪些用户,直接选择并输入密码即可,根本不需要我知道远程计算机用户名是多少。这也是后来的系统要给出“仅允许运行使用网络级别身份验证的远程桌面的计算机连接”的选项的原因之一。
- 也正是由于上面这一的原因,使用WinXP远程要想保存凭据,必须在远程前在“常规”选项卡中勾选“允许我保存凭据”,点击连接后,会弹框让你输入密码。为什么要这么做?因为直接远程过去的话,所有操作就已经在远程计算机上了,包括输入密码,也就没法保存密码了。
- 由于WinXP的特殊性(安全性低),可能会存在其他系统无法远程某机器,但是WinXP可以的情况。如果出现这种情况,一定是远程计算机的安全设置出现了问题,可进一步排查。例如我今天遇到一个Win10电脑不能被远程,提示凭据无法工作的情况,用WinXP可以远程过去,其他系统都不行,最后发现是组策略某设置的问题,具体解决方法是运行
gpedit.msc
打开组策略,找到计算机配置->Windows设置->安全设置->本地策略->安全选项->网络访问:本地帐户的共享和安全模型
,修改为经典模式即可。
7 Win8以后的Microsoft账户问题
由于Win8以后开始使用MS账户,由此产生了一些“无法远程”的问题。究其原因,是MS账户的域的问题。
如图所示,这是一台已登录MS账户的Win10计算机,想远程某个Win7机器时,域被自动设置成了MicrosoftAccount,此时输入用户名密码后,会提示凭据无法工作。这是因为远程计算机本地账户的域不是MicrosoftAccount,因此需要显式指定计算机的域。
以远程我的计算机为例,我的计算机名是fz-DESKTOP
,工作组为WORKGROUP
,用户名为fz
。在一台登录了MS账户的计算机上远程我的计算机时,用户名输入fz-DESKTOP\fz
或者WORKGROUP\fz
就可以正常远程了。
另外,如果远程一台登录了MS账户的计算机,使用本地账户和MS账户都可以,只是可能需要使用相应的域。
UPDATE: 似乎新版本的Win10 10586已经解决了此问题,即使使用MicrosoftAccount域也可以登录本地账户。Win8不太清楚。
8 不能用mstsc进行的工作
其实绝大多数情况使用mstsc都没什么问题,有一种情况肯定是不行的,那就是对显示要求高的程序,例如看视频。
其实我们想一想就可以知道,网络带宽根本不足以支撑正常的显示数据传输,所以MS做了一些优化,让我们远程起来不是那么卡。而看视频的话,这种优化就没用了,因为看视频需要很高的帧数。
另外音频传输会有一定延迟,但是我还没搞清楚为什么,理论上应该是可以做到无延迟的(或延迟很低)。
9 多用户远程
对于MS来说,多用户同时远程一台计算机在技术上并不是难事,不过似乎MS只提供给了Server版这样的功能,普通的系统要手动修改系统文件的。
其实一般是用不到这个功能的,有需要或者有兴趣的话可以搜索“Windows 多用户远程”。
10 Linux远程Windows
上面说的都是Win远程Win的情况,有时候我们也会需要在其他系统上远程Win。
在Linux中,可以使用rdesktop
这个软件。
以Ubuntu为例,执行sudo apt-get install rdesktop
安装。给出一个常用的命令格式:
rdesktop -a 16 -u [username] -p [password] -f -r disk:name=/home/fz -r clipboard:PRIMARYCLIPBOARD -r sound:local [ipaddress]
-a 16
: 使用16位色。-u username
: 指定用户名为username。-p password
: 指定密码为password。-f
: 全屏模式。-r disk:name=/home/fz
: 将本地路径/home/fz
映射到远程计算机中,并起名为name,使其可被远程计算机访问。-r clipboard:PRIMARYCLIPBOARD
: 共享剪贴板,但不支持文件操作。(实际使用中这个共享剪贴板经常出问题)-r sound:local
: 映射远程计算机声音到本地。
可以按CTRL+ALT+ENTER
进行全屏/窗口模式切换。想要退出远程,也只能先切换到窗口模式再退出。
若需指定分辨率,可以把-f
换成-g [resolution]
,例如-g 1920x1080
。
若不指定用户名和密码,则会进入远程计算机的登录界面(类似WinXP),但是不能像WinXP一样显示出远程计算机的用户名。
想要让远程计算机执行CTRL+ALT+DELETE
,直接执行即可(它在Linux中不是系统快捷键)。
更多设置可以man rdesktop
来查看。
另外,Ubuntu自带一个Remmina的远程软件,直接执行即可打开。它支持mstsc的RDP协议,也支持SSH、SFTP等等。
11 Android远程Windows
用起来很简单,效果如下:
12 OS X远程Windows
虽然我并没有用过OS X,不过风刃同学反映他的远程软件想要远程Win10,必须修改远程计算机的组策略,我对此表示怀疑,后来发现他用的是2010年的旧版,而新版Microsoft Remote Desktop只在美区的App Store可以找到,国区没有。所以使用美区账号下载即可,链接在此。这个是一直在更新的,上个月底刚更新过。
另外,OS X用linux的rdesktop
也可以的,我让junshi同学测试了一下,执行brew install rdesktop
安装,中间会提示需要安装一些库,按提示装好即可。
也可以在github,下载release,可参考README安装。(不过这个我没测试)
2018-04-04 UPDATE: 风刃同学告诉我App Store的Microsoft Remote Desktop已经不更新了,现在在Mac上使用RDP最好的方法是brew cask install microsoft-remote-desktop-beta
,这种方法还不需要appleid。
13 PPPoE用户获取IP
如果是想远程家里的电脑,而家里的电脑使用的是PPPoE拨号的话,每次自动获取的IP是随机分配的。想要远程就必须知道电脑的IP是多少。
获取IP的访问有很多,如果你有一个公网服务器的话,这事就简单了。
我的处理方法是让该电脑每1小时访问一次服务器的某个网页,该网页用PHP的$_SERVER[\'REMOTE_ADDR\']
得到访问者IP,并记录下来,通过访问服务器就可以得到家里电脑的IP了。
14 非公网IP、非固定IP的一些方案
如果你是非固定IP,则情况类似PPPoE,可以用上面的方法解决。但如果你没有公网IP,更准确地说是你没有可以直连的IP,那又怎么办呢?
你可以使用VPN达到这一目的。同样地,你需要一台可以直连IP的服务器,装一些VPN软件,让两台机器同时连上VPN,使用你设置好的该VPN分配的内网IP就可以进行远程了。
**2018-08-09 UPDATE: 也可以使用frp这种内网穿透软件。