Linux桌面系统远程访问全解析
?
在網絡中,局域網經常會用到windows遠程桌面,廣域網會使用TeamViewer等工具軟件。同樣,Linux終端要訪問其它終端,也會被其它終端所訪問。遠程訪問協議主要有RDP、SSH和VNC等,不同系統間的訪問矩陣總結如下。
遠程訪問:協議與工具一、遠程訪問協議與服務
遠程訪問服務常用的有RDP、SSH、VNC等協議,RDP是主要在Windows環境中使用,而SSH、VNC則廣泛應用于Linux/Unix環境。但是,所有這些協議與服務都有Windows和Linux版本,甚至手機端版本。
要注意服務端的防火墻要放行相應的端口。有時候需要關閉設置SELinux(setenforce 0)。
1. RDP協議與windows遠程桌面【A】
RDP(Remote Desktop Protocol)遠程桌面協議,用于訪問微軟終端服務,端口號 TCP 3389。大部分的Windows、Linux、FreeBSD、Mac OS X都有相應的客戶端。windows從NT開始提供終端服務,是微軟收購Citrix獲取的技術。終端服務使任何一臺有權限的終端機,用已知的賬號登錄服務器,可以使用賬號內的資源,包括軟件,硬件資源;協議后來不斷升級,客戶端連接后可以使用本地的資源,包括本地打印機、聲音本地回放,本地磁盤資源和本地硬件接口。所有的計算都在服務器端進行,客戶端只需要處理網絡連接、接收數據、界面顯示和設備數據輸出。
主要版本有:
RDP協議支持:
啟用目標windows計算機的遠程桌面,在windows計算機桌面上鼠標右鍵點擊“我的電腦”圖標,選擇“屬性”,在屬性窗口中,點擊“遠程”選項卡,如下圖
開啟windows遠程桌面點擊“允許用戶遠程連接到此計算機”,默認管理員具有此權限,遠程桌面登錄需要輸入對應的賬戶和密碼,如果你只打算讓某個用戶遠程訪問,可以在“遠程用戶”里添加。設置完成后點擊確定即可。默認的端口是 3389,設置后Windows 7默認為防火墻添加此規則,但是如果你手動修改了遠程桌面端口(安全原因),要把防火墻中的端口號同步修改。
注:Linux除了有內置的rdp客戶端(如rdesktop、remmina)可以訪問windows桌面外,xrdp等作為RDP Server,可以通過RDP協議訪問Linux桌面。
2. SSH協議與OpenSSH服務器【B】
傳統的網絡服務程序,如:ftp、pop和telnet在本質上都是不安全的,因為它們在網絡上用明文傳送口令和數據,非常容易截獲口令和數據。SSH 為 Secure Shell?的縮寫,由 IETF 的網絡小組(Network Working Group)所制定;SSH 為建立在應用層基礎上的安全協議。通過使用SSH,你可以把所有傳輸的數據進行加密。
在大多數Linux操作系統中,包括中標麒麟和銀河麒麟,SSH服務是默認安裝和開啟的,一般使用的是OpenSSH服務。
如果不能訪問,可以用netstat -ntlp和ps -e命令看是否啟動了服務(中標麒麟系統中控制面板中【服務】可以查看所安裝的所有后臺服務),再看看防火墻規則是否開啟22端口、SELinux是否啟用和做了規則限制。
查看Linux后臺網絡服務【注】ubuntu安裝后默認只有ssh客戶端(openssh-client),沒有安裝服務端。
安裝,sudo apt install openssh-server。配置文件是 /etc/ssh/sshd_config
ps -e |grep ssh,看到sshd則表示sshserver已經啟動,否則sudo /etc/init.d/ssh start 啟動sshserver
在Windows環境中用SSH的客戶端工具是非常多和優秀,隨著PowerShell的推出和不斷改進,Windows命令行與逐漸功能豐富起來,也適合提供SSH類型服務。
PowerShell主要采用Web Services for Mangement(WS-MAN)進行遠程處理,WS-MAN完全基于Http(默認5985)或者Https(默認5986)進行工作。微軟對WS-MAN的實現是Windows Remote mangement(WinRM),是一個基于SOAP的后臺服務。
從PowerShell 6開始,除了WS-MAN之外,遠程處理技術還可以基于SSH協議。在最新的Windows 10和Windows Server 2019中,可以使用OpenSSH連接遠程機器,OpenSSH客戶端在最新的Windows 10和Windows Server 2019中已默認安裝,在 設置\應用\可選功能 列表下可以找到。
SSH協議登錄過程的進一步分析與免密訪問配置,參考本博客中《SSH訪問Linux:登錄過程解析、免密配置》。
3. VNC協議與服務【C】
Linux下的桌面共享服務主要是VNC服務,VNC (Virtual Network Console)是虛擬網絡控制臺的縮寫,遠程控制能力強大,高效實用,由 AT&T 歐洲研究實驗室開發的開源軟件。
VNC與X WindowVNC服務默認使用5900端口,服務軟件主要有VNCServer、Vino-Server等。
3.1 Linux遠程桌面共享與Vino-server
Ubuntu、中標麒麟和銀河麒麟默認內置了Vino-Server。以中標麒麟為例:【控制面板】→【遠程桌面授權】,(銀河麒麟中叫【桌面共享】,Ubuntu是系統(System) —> 首選項(Preferences) —> 遠程桌面(Remote Desktop)下),出現配置界面如下圖。選中“允許其他人查看您的桌面”,設置一個單獨的訪問密碼,VINO就會啟動服務器端進程vino-server,同時監聽TCP 5900端口。如果不選中“允許其他用戶控制您的桌面”,客戶端則只能觀看不能操縱。
中標麒麟操作系統遠程登錄授權設置注意:由于vino的加密方式和windows VNC客戶端不兼容,還需要改寫一個系統參數,在命令行終端下輸入:
gsettings set org.gnome.Vino prompt-enabled falsegsettings set org.gnome.Vino require-encryption false?3.2 Linux遠程桌面與VNC-server
Vino-Server方式有一個最顯著的缺點:那就是當你重啟機器之后,必須首先到遠程服務器那邊登錄機器,進入系統(相當于創建了一個Session)之后,才能在本地使用遠程桌面連接這個遠程服務器。這個缺點導致Vino-Server有時極為不方便。 一種解決方法就是讓用戶自動登錄windows桌面,啟動vino會話。參考https://blog.csdn.net/weixin_33842328/article/details/93449185和https://blog.csdn.net/rong11417/article/details/104671137/等。
或者是安裝vnc-server,每個用戶都可以啟動自己的vncserver,每個用戶可以啟動多個vncserver,用顯示端口號:1,:2,:3等等來標識,訪問的時候需要帶上端口號。
下面以tigervnc-server 1.3.11 mips64版本為例(從軟件倉庫安裝)。安裝后,出現從vnc viewer客戶端訪問是一片空白,沒有Linux桌面內容出現,需要修改 ~/.vnc/xstatup文件(chmod 777)。網絡上大多的參考解決方案都是GNOME桌面的,而國產Linux基本都是MATE桌面,所以配置不對,最后參考《VNC訪問mate或gnome桌面的服務端配置》。設置如下:
#!/bin/sh# Uncomment the following two lines for normal desktop:# unset SESSION_MANAGER# exec /etc/X11/xinit/xinitrc#export XKL_XMODMAP_DISABLE=1unset SESSION_MANAGERunset DBUS_SESSION_BUS_ADDRESS[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresourcesxsetroot -solid greyvncconfig -iconic &# x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &mate-session &注:vnc-server也支持vion-server類似的桌面共享模式,使用下面啟動模式
vncserver -alwaysshared?3.3 Windows下的VNC
Windows也可以使用VNC協議訪問遠程桌面,安裝VNC Viewer或者TigerVNC Viewer。
Windows下建立VNC服務,使用TigerVNC server或者VNC Server。下圖是TigerVNC Server的運行配置界面,TigerVNC Server可以安裝成windows 服務自啟動。
Windows下VNC服務TigerVNC二、遠程訪問工具及使用
本節中舉例的windows電腦的IP地址是 192.168.14.113,建有普通用戶“mc”,中標麒麟Linux電腦的IP地址是192.168.14.3,建有普通用戶“casic”。
1. mstsc遠程桌面:遠程訪問windows ?
windows遠程桌面是比較常見和簡便的工具,并且能將本地資源映射到遠程windows電腦。但是,要注意Window遠程桌面mstsc和帶參數的mstsc /console的區別。
mstsc不帶參數連接上遠程主機后(默認),是開了一個新的桌面會話Session(是一個隨機的名字,名字都是變化的,),本地主機所看到的遠程主機的桌面其實是一個虛擬桌面,正如前面所說,并非是遠程主機顯示器此時顯示的桌面,而是精簡化之后滴,除了開機就運行的一些程序外,此時遠程主機并不會注銷當前用戶并鎖定桌面。也可以稱為“虛擬桌面”,自然也可以有多個session桌面會話,操作互不“影響”。
帶參數mstsc /console,連接上遠程主機的時候,遠程主機便會立即注銷當前登陸使用的用戶并鎖定桌面(console session),而在遠程主機上的相關操作都將影響本地的使用,也就是說,當遠程主機重新登陸用戶的時候,本地將斷開與之的連接。這種特殊的“虛擬桌面”可以稱為“桌面共享”。
2. putty:遠程訪問Linux 命令行 ?
Windows下遠程命令行類工具,收費的有secure crt等,免費常見如putty等。
putty是一個Telnet、SSH、rlogin、純TCP以及串行接口連接軟件。Putty是開放源代碼軟件,主要由Simon Tatham維護,使用MIT licence授權。現在也支持各類Unix平臺。
Putty配置界面從windows中使用putty SSH客戶端遠程訪問中標麒麟系統的命令行界面,如下圖。
通過SSH協議遠程訪問中標麒麟終端的命令行界面3. VNC Viewer:遠程訪問Linux桌面 ?
VNC客戶端很多,常見的有VNC Viewer、TigerVNC Viewer等,都支持windows和Linux等各種平臺。后面會提到的remmina也可以作為Linux下的VNC客戶端使用。如果Windows上安裝了VNC服務,也可以用VNC Viewer遠程訪問windows桌面。
VNC協議與服務一節中介紹了,vino的加密方式和這些windows VNC客戶端不兼容,需要改寫系統參數才能正常訪問。
在windows終端中使用VNC Viewer客戶端訪問,如下圖:
VNC客戶端提示輸入訪問密碼,就是剛才在Linux的遠程桌面授權中輸入的密碼,進入Linux圖形界面。
注意,如果Linux端是vino-server(桌面共享),VNC Server直接填寫ip地址即可,下圖中兩邊的屏幕顯示是同步的。如果Linux端是vnc-server(遠程桌面),需要填寫ip地址和桌面會話編號,如192.168.14.3:1,會新建一個桌面會話,和遠端登錄的桌面不同。
VNC?Viewer客戶端訪問中標麒麟桌面共享 Tigervnc viewer訪問遠程Linux?
4. Remmina:Linux遠程訪問工具
中標麒麟帶有遠程桌面圖形程序Remmina ,【開始菜單】→【互聯網】→【遠程桌面連接】,啟動遠程桌面連接軟件,如下圖。遠程桌面連接支持 RDP、VNC和 SSH等協議,使用SSH協議遠程管理設備和Linux電腦,使用VNC方式訪問Linux電腦桌面,使用RDP協議訪問windows電腦桌面。
???【注】Remmina通過插件支持各種協議,可以自行在軟件倉庫中安裝相應插件。
銀河麒麟V10的remmina加載了RDP協議插件,但沒有正常列出。
中標麒麟的遠程桌面支持SSH/VNC/RDP三種訪問協議?
?4.1 Linux遠程訪問windows遠程桌面(RDP) ?
首先啟用目標windows計算機的遠程桌面。然后在中標麒麟操作系統終端中,【開始】→【互聯網】→【遠程桌面連接】,如下圖。
中標麒麟操作系統遠程訪問windows桌面選擇windows桌面訪問的RDP協議,在地址上填寫windows電腦的ip,點擊連接,進入windows遠程登錄界面,登錄后進入windows桌面。還可以將這個連接進行保存,按“+”鍵,可以新增一個連接,例如mywin7PC,填入用戶名“mc”密碼,和windows遠程桌面一樣,可以將本機的資源共享過去(這也是一種方便的在Linux和windows間交換文件方法)。
遠程訪問windows桌面配置參數出現登錄界面如下圖,上面是一排遠程桌面工具按鈕,如調整窗口大小、特殊鍵(Ctrl+Alt+del等)、截屏等,可以自動隱藏。登錄成功后,可以看到windows桌面,并且中標麒麟系統的D盤也就是用戶盤也可以在windows文件管理器中直接訪問。
?
遠程訪問windows桌面登錄界面?
遠程進入windows桌面【注】rdesktop是linux下支持Windows遠程桌面連接的客戶端程序(銀河麒麟V10默認沒有安裝,需要手動安裝),在linux系統下可通過它遠程訪問Windows桌面。gdesktop是Gnome桌面的遠程登錄前端,是其圖形界面版本。
從命令行啟動rdesktop:
$ rdesktop -f 192.168.1.112-f參數默認全屏打開,使用Ctrl + Alt + Enter可以退出全屏模式。
可以簡單的寫個shell腳本,每次點擊就可以連接。
rdesktop遠程訪問windows更完整的參數如下:
$ rdesktop -f -a 16 -u {user} -p {pass} ?{IP} ?-r sound:on/off ?-g 1024*768
| 1、user和pass分別是目標電腦的帳號和密碼,-a 16表示位色,最高就是16位; 5、使用 -f 參數進入全屏模式,中途Ctrl+Alt+Enter退出全屏; |
4.2 Linux遠程訪問Linux命令行(SSH) ?
遠程訪問Linux系統終端命令行界面使用SSH協議,Linux系統一般內置了ssh命令,ssh -l root 192.168.10.58
中標麒麟操作系統桌面版已經自帶SSH Server,可以直接遠程訪問。可以從上圖的界面中選擇SSH協議,輸入要遠程訪問的中標麒麟終端IP地址,然后輸入用戶名casic及密碼。
ssh遠程訪問Linux命令行(上面為remmina,下面為ssh命令)?
4.3 Linux遠程訪問VNC桌面(VNC) ??
在另外一臺Linux終端上,可以使用遠程桌面的VNC協議方式訪問這臺Linux終端,如Remmina就包括VNC客戶端功能。
5. Microsoft Remote Desktop:從手機遠程訪問Windows桌面 ?
Microsoft Remote Desktop 10是微軟官方免費遠程桌面控制 Windows 的軟件 APP,跨平臺支持 Android、iOS 、Win、macOS 系統。Microsoft Remote Desktop 10非常強大,可在 PC、安卓手機和平板、iPhone / iPad、甚至蘋果 Mac 上直接遠程連接并控制你的電腦,在平板上應該效果會比較好,能將 Win10 變成“觸摸屏版本”使用。
在華為應用市場上已經可以下載到這個APP,如下圖左。
如果你的手機和筆記本電腦在一個wifi下面,可以直接訪問,如下圖右通過IP地址或者機器,輸入遠程電腦的用戶和密碼,如下圖右。
Microsoft Remote Desktop登陸成功后顯示遠程windows的桌面,默認分辨率是600*1200(可以橫屏)。在手機屏幕上滑動控制鼠標,單擊屏幕相當于鼠標單擊,如下圖左。
保存過的會話配置會記錄下來,下次使用直接可以點擊打開,如下圖右。
Microsoft Remote Desktop訪問遠程windows桌面Microsoft Remote Desktop訪問的是當前桌面(桌面共享),相當于mstsc /console,
6. JuiceSSH:從手機遠程訪問Linux命令行 ?
JuiceSSH是一款高質量的免費無廣告SSH客戶端應用,支持包括SSH,Local Shell,Mosh 和Telnet。
JuiceSSH使用和windows下的putty等類似,如下圖:
JuiceSSH訪問遠程Linux命令行7. VNC Viewer?for Android:從手機遠程訪問VNC桌面 ?
VNC Viewer for andorid是一款兼容標準vnc服務端的遠程控制應用。無論你使用什么系統,只要有VNC服務端,就可以使用此應用進行連接和遠程管理。使用方法和前面差不多,下圖是訪問的windows VNC服務。
VNC Viewer for andorid 訪問遠程VNC桌面?
三、其他
1. 桌面共享與虛擬桌面
前面介紹RDP協議也提到,遠程桌面實際上有兩種類型:一種是桌面共享(包括控制),客戶端和服務端顯示同樣的桌面;二是虛擬桌面,客戶端新建了一個桌面會話。桌面共享可以算是虛擬桌面的特例。
Mstsc是虛擬桌面,mstsc /console是共享桌面。
vnc-server是虛擬桌面,vncserver -alwaysshared 、Vino-server是桌面共享。
QQ遠程控制、TeamViewer等遠程協助控制工具都是共享桌面。
【?】VNC協議無聲音和usb傳輸,RDP協議由于在色彩、音頻、usb及本地磁盤映射方面較好,相對更適用于虛擬桌面。
2. SSH X11轉發
除了遠程訪問Linux桌面外,另外一種方式是不啟用桌面,僅僅使用單個Linux圖形程序,比較適合偶爾使用Linux應用的場景。可以使用SSH 的x11轉發實現。
Linux服務端:
修改/etc/ssh/sshd_config文件,確保文件中有如下行
# vim /etc/ssh/sshd_configX11Forwarding yesSSH客戶端(windows):
Putty配置中,連接/SSH/X11項,勾選右側X11 forwarding
Xming 是一個功能強大的開源 X Server,實現本地X顯示,安裝后系統欄
Putty設置X11轉發?
xming服務托盤配置完成后,putty SSH登錄到遠程Linux,以中標麒麟的系統信息程序為例(hardinfo),在命令行下輸入
#hardinfo?會啟動圖形化的hardinfo程序,如下圖,包括Firefox、WPS都可以這種方式啟動,當然WPS這種工具操作起來會麻煩一些。
3. TeamViewer與內網穿越
上面舉例主要是同一個LAN(wifi)下的訪問。如果是從家里訪問辦公室電腦,需要進行內網穿透。
一種是自行配置內網穿透,如端口映射或者?FRP 內網穿透,然后就可使用前述各工具。
第二種是使用Teamviewer以及相似的向日葵等工具,甚至QQ遠程控制都是遠程控制類工具(基于桌面共享),都支持內網穿透(realVNC也可以提供類似功能)。適合技術支持、遠程維護等。
注:Vncserver支持反向連接設置。在大多數情況下,vncserver總處于監聽狀態,vnc client主動向服務器發出請求從而建立連接。然而在一些特殊的場合,需要讓vnc客戶機處于監聽狀態,vncsrever主動向客戶機發出連接請求,此謂vnc的反向連接。
4. 多用戶使用
VNC Server身份驗證基于密碼,而不需要用戶名。因此,每個用戶必須啟動一個獨立的 VNC 服務器會話,并通過指定正確的端口號連接到 VNC 實例。如果多用戶使用請參考相關文章進行配置。
四、參考資料
總結
以上是生活随笔為你收集整理的Linux桌面系统远程访问全解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 淘宝图片服务器的学习
- 下一篇: Linux下安装anaconda,创建虚