Total Pageviews

Sunday 3 July 2016

远程桌面连接(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已经解决了此问题,即使使用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,直接执行即可。

更多设置可以man rdesktop来查看。

另外,Ubuntu自带一个remmina的远程软件,直接执行即可打开。它支持mstsc的RDP协议,也支持SSH、SFTP等等。

11 Android上,远程连接Windows
下载安装Microsoft Remote Desktop:
https://play.google.com/store/apps/details?id=com.microsoft.rdc.android

12 mac上,远程连接Windows

虽然我并没有用过OS X,不过风刃同学反映他的远程软件想要远程Win10,必须修改远程计算机的组策略,我对此表示怀疑,后来发现他用的是2010年的旧版,而新版Microsoft Remote Desktop只在美区的App Store可以找到,国区没有。所以使用美区账号下载即可,链接在此。这个是一直在更新的,上个月底刚更新过。
另外,OS X用linux的rdesktop也可以的,我让junshi同学测试了一下,执行brew install rdesktop安装,中间会提示需要安装一些库,按提示装好即可。
也可以在github,下载release,可参考README安装。(不过这个我没测试)
--------------------

在此版本的 Windows 中,可以从搜索框(“运行”对话框或命令行)启动远程桌面连接,而不是从“开始”菜单启动它。 使用这些方法,您可以使用其他命令行参数控制远程桌面连接的外观和行为。
从“运行”对话框启动远程桌面的步骤
依次单击“开始”按钮 、“所有程序”、“附件”和“运行”。
在“打开”框中,键入 mstsc。
键入一个空格,然后在空格后面键入希望使用的任意其他参数。
下表列出了可以使用的参数。
远程桌面连接的命令行语法
Mstsc语法

mstsc [<connection file>] [/v:<server[:port]>] [/admin] [/f[ullscreen]] [/w:<width>] [/h:<height>] [/public] | [/span] [/edit "connection file"] [/migrate] [/?]

mstsc [<connection file>] [/v:<server[:port]>] [/admin] [/f[ullscreen]] [/w:<width>] [/h:<height>] [/public] | [/span] [/edit "connection file"] [/migrate] [/?]
远程桌面连接的命令行参数
参数
描述
/v:<server[:port]>
指定要连接的远程计算机。
/admin
用于管理远程桌面会话主机服务器。 在此版本的远程桌面连接中,如果远程桌面会话主机角色服务安装在远程计算机上,则运行 mstsc /admin 将可完成以下操作(仅适用于当前连接):
禁用远程桌面服务客户端访问许可证
禁用时区重定向
禁用 RD 连接代理重定向
禁用远程桌面轻松打印
如果连接到安装了 RD 会话主机角色服务的 Windows Server 2008 R2,则运行 /admin 还将完成以下操作:
仅针对此连接禁用即插即用设备重定向。
仅将此连接的远程会话主题更改为 Windows 经典视图(如果有)。
要连接到安装了 RD 会话主机角色服务的远程计算机,请执行以下步骤:
通过单击“开始”按钮 ,打开“命令提示符”窗口。 在搜索框中,键入命令提示符,然后在结果列表中单击“命令提示符”。
键入 mstsc /v:server /admin。

/f
以全屏模式启动远程桌面连接。

/w:<width>
指定远程桌面连接窗口的宽度。

/h:<height>
指定远程桌面窗口的高度。

/public
以公共模式运行远程桌面连接。

/span
使远程桌面的宽度和高度与本地 虚拟机相匹配,如有必要,可以扩展到多个监视器。 若要扩展 到多个监视器,必须将监视器排列成一个矩形。

/multimon
将远程桌面会话显示器布局配置为与当前的客户端配置相同。

/edit "连接文件"
打开指定的 .rdp 连接文件进行编辑。

/migrate
将使用客户端连接管理器创建的旧的连接文件迁移到新的 .rdp 连接文件中。

/?
列出这些参数.