Ubuntu18.04.2LTS配置vnc+frp內(nèi)網(wǎng)穿透實現(xiàn)桌面遠程訪問

之前使用Teamviewer來遠程電腦柏肪,更新之后老是提示被商用,無奈天吓,尋求其他方案如anyDesk贿肩、向日葵遠程控制、splashtop龄寞、VNC汰规。

frp項目地址:https://github.com/fatedier/frp
frp 是一個可用于內(nèi)網(wǎng)穿透的高性能的反向代理應(yīng)用,支持 tcp, udp,http 和 https協(xié)議物邑。
VNC溜哮,全稱為Virtual Network Computing,它是一個桌面共享系統(tǒng)色解。功能茂嗓,類似于windows中的遠程桌面功能。VNC與Windows遠程桌面一樣是使用RFB(Remote FrameBuffer科阎,遠程幀緩沖)協(xié)議來實現(xiàn)遠程控制另外一臺計算機述吸。

目的

本文介紹的是在Ubuntu 18.04.2LTS Bionic Beaver上開啟VNC服務(wù)端并frp穿透內(nèi)網(wǎng)實現(xiàn)遠程桌面共享。

環(huán)境

  • 操作系統(tǒng) Ubuntu 18.04.2LTS Bionic Beaver(x86_64)
  • 云服務(wù)器(公網(wǎng)ip地址)

注意事項

  • # -要求使用root權(quán)限直接以root用戶使用命令或?qū)?zhí)行的命令使用linux sudo
  • $ -要求給定的linux命令作為常規(guī)非特權(quán)用戶執(zhí)行

Step 1 啟用遠程桌面共享

首先查看下Ubuntu系統(tǒng)上是否安裝遠程桌面共享锣笨,沒有的話就執(zhí)行安裝:

$ sudo apt update && sudo apt install -y vino
desktop sharing

使用Activities菜單搜索Sharing可以在Settings部分看到選項蝌矛,直接打開它道批,或者以命令行的方式打開

$ gnome-control-center sharing
Sharing

單擊Screen Sharing以開始遠程桌面配置

將開關(guān)打開為ON,可以選擇設(shè)置密碼并記住你設(shè)置的密碼入撒,后面連接的時候要用密碼隆豹。

Allow connections to control the screen選項使遠程用戶能夠主動與遠程桌面交互。如果未選中此選項茅逮,則遠程桌面會話將設(shè)置為只讀噪伊。

啟用Ubuntu的遠程桌面功能后,可以看到系統(tǒng)正在偵聽端口5900

如果您啟用了UFW防火墻氮唯,請打開5900端口

類似于:

$ sudo ufw allow from any to any port 5900 proto tcp
Rule added
Rule added (v6)

Step 2 建立遠程桌面連接

我們將在Ubuntu 18.04系統(tǒng)上使用Remmina遠程桌面客戶端鉴吹,如果沒有先安裝一個,打開Ubuntu Software搜索remmina安裝或者命令行方式安裝:

$ sudo apt install remmina

使用Activities菜單搜索并啟動Remmina遠程桌面客戶端或運行命令行

$ remmina

從下拉菜單中選擇協(xié)議VNC,然后輸入Ubuntu遠程桌面系統(tǒng)的主機名或IP地址惩琉,按下Enter鍵即可連接.

輸入前面設(shè)置的密碼確認連接豆励。

連接成功,是這個樣子瞒渠。

遠程桌面共享連接成功良蒸。你也可以使用Remmina面板進一步調(diào)整遠程桌面連接設(shè)置。

好了伍玖,到了這一步已經(jīng)確認我們Ubuntu18.04系統(tǒng)的桌面共享服務(wù)已經(jīng)安裝好了嫩痰。這意味著你將可以與你局域網(wǎng)內(nèi)的機器實現(xiàn)桌面共享,接下來窍箍,使用frp實現(xiàn)內(nèi)網(wǎng)穿透串纺,對外網(wǎng)提供服務(wù),隨時隨地可以使用網(wǎng)絡(luò)遠程桌面到Ubuntu 18.04椰棘。

Step 3 配置frp實現(xiàn)內(nèi)網(wǎng)穿透

首先下載frp二進制文件 https://github.com/fatedier/frp/releases
根據(jù)處理器架構(gòu)選擇對應(yīng)壓縮包

  • Windows 64位 :frp_版本號_windows_amd64.zip
  • Windows 32位:frp_版本號_windows_386.zip
  • Linux 64位:frp_版本號_linux_amd64.tar.gz
  • Linux 32位:frp_版本號_linux_386.tar.gz

注意:從0.18.0版本開始纺棺,新版與舊版不兼容,并且部分配置字段不同邪狞。請確保服務(wù)端和客戶端使用同一版本祷蝌。

下載程序

我這里云服務(wù)器和Ubuntu18.04都是x86_64架構(gòu)的,所以我下載linux_amd64的壓縮包

下面以x84_64處理器架構(gòu)舉例帆卓, 此時frp 最新版是v0.27.0

# 查看cpu架構(gòu)
arch
# 創(chuàng)建frp文件夾并進入
mkdir frp && cd frp
# 下載
wget -q -c --no-check-certificate https://github.com/fatedier/frp/releases/download/v0.27.0/frp_0.27.0_linux_amd64.tar.gz
# 解壓
tar -xzvf frp_0.27.0_linux_amd64.tar.gz
# 進入文件夾
cd frp_0.27.0_linux_amd64
# 確保 frps 程序具有可執(zhí)行權(quán)限
chmod +x frps
# 運行
./frps --help

如果有報錯 -bash: ./frps: cannot execute binary file: Exec format error就說明你下錯版本

配置程序

服務(wù)端配置參考frps_full.ini
客戶端配置參考frpc_full.ini

服務(wù)端 -frps.ini

# 下面這句開頭必須要有巨朦,表示配置的開始
[common]

# frp 服務(wù)端端口(必須)
bind_port = 7000

# frp 服務(wù)端密碼(必須)
token = 12345678

# 認證超時時間,由于時間戳?xí)挥糜诩用苷J證剑令,防止報文劫持后被他人利用
# 因此服務(wù)端與客戶端所在機器的時間差不能超過這個時間(秒)
# 默認為900秒糊啡,即15分鐘,如果設(shè)置成0就不會對報文時間戳進行超時驗證
authentication_timeout = 900

# 儀表盤端口尚洽,只有設(shè)置了才能使用儀表盤(即后臺)
dashboard_port = 7500

# 儀表盤訪問的用戶名密碼悔橄,如果不設(shè)置,則默認都是 admin
dashboard_user = admin
dashboard_pwd = admin

# 如果你想要用 frp 穿透訪問內(nèi)網(wǎng)中的網(wǎng)站(例如路由器設(shè)置頁面)
# 則必須要設(shè)置以下兩個監(jiān)聽端口腺毫,不設(shè)置則不會開啟這項功能
vhost_http_port = 10080
vhost_https_port = 10443

# 此設(shè)置需要配合客戶端設(shè)置癣疟,僅在穿透到內(nèi)網(wǎng)中的 http 或 https 時有用(可選)
# 假設(shè)此項設(shè)置為 example.com,客戶端配置 http 時將 subdomain 設(shè)置為 test潮酒,
# 則你將 test.example.com 解析到服務(wù)端后睛挚,可以使用此域名來訪問客戶端對應(yīng)的 http
subdomain_host = example.com

這是我的服務(wù)端-frps.ini的配置

[common]
bind_port = 7000
token = 12345678
authentication_timeout = 900
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
vhost_http_port = 8080
subdomain_host = example.com
max_pool_count = 10
log_file = ./frps.log
log_level = info
log_max_days = 3

客戶端 -frpc.ini

############################################
# 基本配置(必須)
# 下面這句開頭必須要有,表示配置的開始
############################################
[common]
# frp 服務(wù)端地址急黎,可以填ip或者域名
server_addr = 0.0.0.0
# frp 服務(wù)端端口扎狱,即填寫服務(wù)端配置中的 bind_port
server_port = 7000
# 填寫 frp 服務(wù)端密碼
token = 12345678

###########################################
# 轉(zhuǎn)發(fā) ssh 
# 自定義一個配置名稱,格式為“[名稱]”勃教,放在開頭
###########################################
[ssh]
# 連接類型淤击,填 tcp 或 udp
type = tcp

# 本地ip,填你需要轉(zhuǎn)發(fā)到的目的ip
# 如果是轉(zhuǎn)發(fā)到frp客戶端所在本機(比如路由器)則填 127.0.0.1
# 否則填對應(yīng)機器的內(nèi)網(wǎng)ip
local_ip = 127.0.0.1
# 需要轉(zhuǎn)發(fā)到的端口故源,比如 ssh 端口是 22
local_port = 22

# 是否加密客戶端與服務(wù)端之間的通信污抬,默認是 false
use_encryption = false
# 是否壓縮客戶端與服務(wù)端之間的通信,默認是 false
# 壓縮可以節(jié)省流量绳军,但需要消耗 CPU 資源
# 加密自然也會消耗 CPU 資源印机,但是不大
use_compression = false

# frp 服務(wù)端的遠程監(jiān)聽端口,即你訪問服務(wù)端的 remote_port 就相當(dāng)于訪問
# 客戶端的 local_port门驾,如果填0則會隨機分配一個端口
remote_port = 6001

###########################################
# 轉(zhuǎn)發(fā)HTTP(s)
# 自定義一個配置名稱射赛,格式為“[名稱]”,放在開頭
###########################################
[router-web]
# 連接類型奶是,填 http 或 https
type = http

local_ip = 127.0.0.1
local_port = 80

# http 可以考慮加密和壓縮一下
use_encryption = true
use_compression = true

# 自定義訪問網(wǎng)站的用戶名和密碼楣责,如果不定義的話誰都可以訪問,會不安全
# 有些路由器如果從內(nèi)部訪問web是不需要用戶名密碼的聂沙,因此需要在這里加一層密碼保護
# 如果你發(fā)現(xiàn)不加這個密碼保護腐魂,路由器配置頁面原本的用戶認證能正常生效的話,可以不加
http_user = admin
http_pwd = admin

# 還記得我們在服務(wù)端配置的 subdomain_host = example.com 嗎
# 假設(shè)這里我們填 web01逐纬,那么你將 web01.example.com 解析到服務(wù)端ip后
# 你就可以使用 域名:端口 來訪問你的 http 了
# 這個域名的作用是用來區(qū)分不同的 http蛔屹,因為你可以配置多個這樣的配置
subdomain = web01

# 自定義域名,這個不同于 subdomain豁生,你可以設(shè)置與 subdomain_host 無關(guān)的其他域名
# subdomain 與 custom_domains 中至少有一個必須要設(shè)置
custom_domains = web02.yourdomain.com

# 匹配路徑兔毒,可以設(shè)置多個,用逗號分隔甸箱,比如你設(shè)置 locations 為以下這個育叁,
# 那么所有 http://xxx/abc 和 http://xxx/def 都會被轉(zhuǎn)發(fā)到 http://xxx/
# 如果不需要這個功能可以不寫這項,就直接該怎么訪問就怎么訪問
locations = /abc,/def

# 重寫 host header芍殖,相當(dāng)于反向代理中的“發(fā)送域名”
# 如果設(shè)置了豪嗽,轉(zhuǎn)發(fā) http 時,請求中的 host 會被替換成這個
# 一般情況下不需要用到這個,可以不寫這項
host_header_rewrite = dev.yourdomain.com

##############################################
# TCP/UDP 范圍轉(zhuǎn)發(fā)
# 自定義一個配置名稱龟梦,格式為“[range:名稱]”隐锭,放在開頭
##############################################
[range:multi-port]

type = tcp
local_ip = 127.0.0.1
use_encryption = false
use_compression = false

# 本地端口和遠程端口可以指定多個范圍,如下格式计贰,且范圍之間必須一一對應(yīng)
local_port = 6010-6020,6022,6024-6028
remote_port = 16010-16020,16022,16024-16028

這是我的客戶端-frpc.ini的配置

[common]
server_addr = example.com
server_port = 7000
token = 12345678

[web]
type = http
local_ip = 192.168.103.145
local_port = 80
custom_domains = example.com

[RDP]
type = tcp
local_ip = 192.168.103.145
local_port = 5900
remote_port = 5900

服務(wù)器端運行啟動

$ nohup /root/frp/frps -c /root/frp/frps.ini &

客戶端(Ubuntu18.04)啟動

$ nohup /home/xmaihh/frp/frpc -c /home/xmaihh/frp/frpc.ini &

停止

$ pkill frps   或者 pkill frpc

云服務(wù)器注意放行相關(guān)端口.

開機啟動

自啟動可以修改/etc/rc.local文件,加入啟動命令
或者其他系統(tǒng)自行設(shè)置钦睡。

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
#nohup socat TCP4-LISTEN:4443,reuseaddr,fork TCP4:192.168.103.145:8123 >> /root/socat.log 2>&1 &
#nohup socat UDP4-LISTEN:4443,reuseaddr,fork UDP4:192.168.103.145:8123 >> /root/socat.log 2>&1 &
nohup /root/frp/frps -c /root/frp/frps.ini &
exit 0

建立遠程連

請注意remote_port = 5900我把Ubuntu18.04的VNC Sharing端口5900映射到云服務(wù)器的5900端口,建立連接時躁倒,連接你的服務(wù)器+服務(wù)器端口號荞怒。

這里我使用手機開數(shù)據(jù)網(wǎng)絡(luò),關(guān)閉WIFi秧秉,下載VNC Viewer客戶端來一下遠程連接褐桌。

打開手機VNC Viewer,點擊+,在Address處填入 ip+端口形式 xxx.xxx.xxx.xxx::5900或者 域名+端口形式 example.com::5900

點擊進行下一步輸入密碼以看到畫面了象迎。

Issues

No matching security types

VNC客戶端不支持加密荧嵌。任何連接到遠程桌面共享服務(wù)器的嘗試都將導(dǎo)致No matching security types錯誤

如果遇到這個錯誤,請按照以下步驟解決:

  1. 安裝dconf工具
$ sudo apt-get install dconf-tools
  1. 打開dconf-editor
$ dconf-editor

依次切換到org->gnome->desktop->remote-access并將require-encryption項目關(guān)閉挖帘。

  1. 執(zhí)行
$ gsettings set org.gnome.Vino require-encryption false

如果輸出警告:GLib-GIO-Message: 10:19:43.137: Using the 'memory' GSettings backend. Your settings will not be saved or shared with other applications.
可以先執(zhí)行export GIO_EXTRA_MODULES=/usr/lib/x86_64-linux-gnu/gio/modules/然后再執(zhí)行3完丽。

  1. 確認已禁用遠程服務(wù)器上的加密
$ gsettings list-recursively org.gnome.Vino | grep encrypt 

Reference

How To Enable Desktop Sharing In Ubuntu and Linux Mint
內(nèi)網(wǎng)穿透神器搭建 萌新也看得懂的教程系列

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市拇舀,隨后出現(xiàn)的幾起案子逻族,更是在濱河造成了極大的恐慌,老刑警劉巖骄崩,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聘鳞,死亡現(xiàn)場離奇詭異,居然都是意外死亡要拂,警方通過查閱死者的電腦和手機抠璃,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來脱惰,“玉大人搏嗡,你說我怎么就攤上這事±唬” “怎么了采盒?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長蔚润。 經(jīng)常有香客問我磅氨,道長,這世上最難降的妖魔是什么嫡纠? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任烦租,我火速辦了婚禮延赌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘叉橱。我一直安慰自己挫以,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布赏迟。 她就那樣靜靜地躺著屡贺,像睡著了一般蠢棱。 火紅的嫁衣襯著肌膚如雪锌杀。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天泻仙,我揣著相機與錄音糕再,去河邊找鬼。 笑死玉转,一個胖子當(dāng)著我的面吹牛突想,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播究抓,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼猾担,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了刺下?” 一聲冷哼從身側(cè)響起绑嘹,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎橘茉,沒想到半個月后工腋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡畅卓,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年擅腰,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片翁潘。...
    茶點故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡趁冈,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拜马,到底是詐尸還是另有隱情渗勘,我是刑警寧澤,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布一膨,位于F島的核電站呀邢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏豹绪。R本人自食惡果不足惜价淌,卻給世界環(huán)境...
    茶點故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一申眼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蝉衣,春花似錦括尸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至啦膜,卻和暖如春有送,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背僧家。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工雀摘, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人八拱。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓阵赠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親肌稻。 傳聞我的和親對象是個殘疾皇子清蚀,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,573評論 2 353