打算從今天開始,寫一寫我經常用的,有長時間使用經驗的東西,與大家分享,就從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這種內網穿透軟件。