遠程管理 Mac OSX 設備

本文使用「署名 4.0 國際 (CC BY 4.0)」許可協議,歡迎轉載、或從新修改使用,但須要註明來源。 署名 4.0 國際 (CC BY 4.0)html

本文做者: 蘇洋linux

建立時間: 2019年03月11日 統計字數: 4300字 閱讀時間: 9分鐘閱讀 本文連接: https://soulteary.com/2019/03/11/mac-osx-remote-management.htmlgit


遠程管理 Mac OSX 設備

開發設備通常開放 SSH 端口和訪問權限就可以知足幾乎全部需求,可是若是設備換成了 Windows 或者 OSX ,這個事情就沒有那麼簡單了,偶爾仍是須要登陸圖形界面作一些事情。對於我這種家裏局域網有完整開發環境的折騰控,遠程管理 OSX 設備的需求就出現了。github

若是你使用相似 AnyConnect 的方式去鏈接專有網絡進行開發,這個事情能夠相對容易的解決,可是會額外帶來一個問題:你的全部流量都會走目標設備。編程

而若是使用本地端口轉發、系統PROXY的方案來作,有些客戶端又支持的不是很好,好比我一直在使用的 Remotix ,我購買這款軟件有好幾年了,它可以讓我在筆記本、平板、甚至是手機上解決一些問題,可是一旦我離開局域網環境,它的「假期就開始了」。安全

本文將花費十五分鐘的時間,解決這個問題。bash

反向代理指定應用端口

相比較所有流量都走目標設備,這個方案明顯更合理。固然,你也能夠選擇配置路由表解決上面的問題,不過若是目標設備有多臺,分佈於多個位置,難道咱們要不停切換網絡鏈接狀態嗎。服務器

這裏用到的技術方案主要是:流量反向代理。網絡

我選擇的工具是 github.com/fatedier/fr…,選擇它的緣由很簡單,它的代碼開源。app

這個方案須要一臺位於公網的服務器,前一陣清理服務,正好空閒了兩臺,拿來作這個事情再適合不過了。

配置服務端

這裏的服務端是具有公網 IP 地址的雲服務器,用來反向代理你在局域網中須要被訪問的設備。

Ubuntu 18.04 爲例,咱們進行服務端的配置。訪問 github.com/fatedier/fr… 獲取最新的軟件包。

cd /tmp
wget https://github.com/fatedier/frp/releases/download/v0.24.1/frp_0.24.1_linux_amd64.tar.gz
tar -zxvf frp_0.24.1_linux_amd64.tar.gz
複製代碼

解壓縮以後,你會看到一堆文件,其中名稱爲 frps 的文件是和服務器相關的,而命名爲 frpc 則是客戶端相關的文件。

咱們先對應用目錄進行規劃,理想的目錄環境能夠是這樣:

.
├── conf # 存放配置文件
│   └── supervisor.ini
├── frps # 服務端應用
├── frps.ini
└── log # 存放日誌文件
    ├── frps.log
    └── supervisor.log
複製代碼

建立必要的目錄,並將以前下載好的應用執行文件放到這個目錄中。

mkdir -p /data/frp/{conf,log}
mv /tmp/frp_0.24.1_linux_amd64/frps /data/frp
複製代碼

接着咱們來建立一個服務端配置文件,能夠參考下面的配置,並適當修改內容。

[common]
bind_port = 8000
bind_addr = 0.0.0.0

dashboard_addr = 0.0.0.0
dashboard_addr = 8080
dashboard_user = homelab_user
dashboard_pwd  = homelab_pass

token = token_used_by_server_and_client

max_pool_count = 5
max_ports_per_client = 0
tcp_mux = true
複製代碼

若是你將上面的配置保存爲 frps.ini,接下來就能夠執行命令驗證配置是否正確。

/data/frp/frps -c /data/frp/frps.ini
複製代碼

不出意外,你將看到下面的提示:

2019/03/11 12:30:45 [I] [service.go:124] frps tcp listen on 0.0.0.0:8000
2019/03/11 12:30:45 [I] [root.go:204] Start frps success
複製代碼

這裏須要額外注意一件事,若是你使用的雲服務開啓了安全組功能,須要額外配置安全組的規則,對上述配置文件的端口進行放行,若是開啓了 ufw 這類防火牆,也是同理。

爲了服務的穩定運行,這裏咱們仍是使用 supervisor 進行進程管理和運行守護,若是有不會配置的同窗能夠翻看以往的文章或者自行搜索。

這裏給出一個基礎的配置參考:

[program:frp]
; 啓動目錄
directory = /data/frp/
; 執行命令
command = /data/frp/frps -c /data/frp/frps.ini
; 隨 supervisord 啓動
autostart = true
; 程序啓動 5s 內沒有異常則認爲是正常運行
startsecs = 10
; 程序異常退出後從新啓動
autorestart = true
; 重試啓動程序多少次
startretries = 1000
; 默認使用當前用戶執行應用
;user = soulteary
; 須要手動建立目錄
stdout_logfile = /data/frp/log/supervisor.log
複製代碼

固然,別忘記重啓 supervisor 讓配置生效,具體操做上一篇文章中有講。

配置客戶端

這裏的客戶端是指你須要被訪問的設備,或者使用端口轉發規則可以訪問到目標設備的路由器、交換機設備,本文中的客戶端指的是一臺 Mac Book Pro 筆記本。

和配置服務端相似,咱們先下載軟件包,並準備應用執行目錄。

wget https://github.com/fatedier/frp/releases/download/v0.24.1/frp_0.24.1_darwin_amd64.tar.gz
tar -zxvf frp_0.24.1_darwin_amd64.tar.gz

mkdir -p ~/Service/frp/{conf,log}
mv frp_0.24.1_darwin_amd64/frpc ~/Service/frp/
複製代碼

接着建立客戶端的配置文件,這裏暫定命名爲 frpc.ini,具體內容請根據具體狀況修改。

[common]
server_addr = 123.123.123.123
server_port = 8000
token = token_used_by_server_and_client

admin_port = 8080
admin_user = homelab_client
admin_pwd  = homelab_client

pool_count = 5
tcp_mux = true

[vnc]
type = tcp
local_ip = 127.0.0.1
local_port = 5900
use_encryption = true
use_compression = trye
remote_port = 5900
health_check_type = tcp
health_check_timeout_s = 3
health_check_max_failed = 3
health_check_interval_s = 10
複製代碼

這裏須要額外注意的是:token 字段,內容務必和服務端保持一致,不然沒法建立鏈接。

另外,你但願可以被遠程訪問到的服務,它的 remote_port 一樣須要服務端開放此端口的訪問規則。

接着,咱們運行下面的命令,進行測試,看看服務是否聯通。

~/Service/frp/frpc -c ~/Service/frp/frpc.ini
複製代碼

若是一切正常,你將可以看到相似下面的日誌:

2019/03/11 12:36:00 [I] [service.go:214] login to server success, get run id [4a62ac3f5f635268], server udp port [0]
2019/03/11 12:36:00 [I] [proxy_manager.go:137] [2a62ac3f5f635268] proxy added: [rdp]
2019/03/11 12:36:00 [I] [health.go:115] [2a62ac3f5f635268] [rdp] health check status change to success
2019/03/11 12:36:00 [I] [proxy_wrapper.go:206] [2a62ac3f5f635268] [rdp] health check success
2019/03/11 12:36:00 [I] [control.go:143] [vnc] start proxy success
複製代碼

這時,打開客戶端軟件,建立一個 VNC 連接,服務器地址填寫雲主機的IP,端口填寫客戶端服務 remote_port ,若是上述配置都正常,那麼你將會看到遠程桌面的登陸提示。

Mac OSX 登陸提示

輸入正確的用戶名和密碼以後,熟悉的桌面就呈如今你的眼前了。

Mac OSX 遠程桌面

Mac OSX 系統上的進程管理,上一篇文章已經提到過,這裏不作贅述,簡單提供一個 supervisor 配置。

rogram:frp]
; 啓動目錄
directory = /Users/soulteary/Service/frp/
; 執行命令
command = /Users/soulteary/Service/frp/frpc -c /Users/soulteary/Service/frp/frpc.ini
; 隨 supervisord 啓動
autostart = true
; 程序啓動 5s 內沒有異常則認爲是正常運行
startsecs = 10
; 程序異常退出後從新啓動
autorestart = true
; 重試啓動程序多少次
startretries = 1000
; 默認使用當前用戶執行應用
;user = soulteary
; 須要手動建立目錄
stdout_logfile = /Users/soulteary/Service/frp/log/supervisor.log
複製代碼

最後

長時間這樣暴露端口,其實並非理智 & 安全的選擇,爲了更加安全的使用這個服務,咱們還須要作一些額外的策略,後續我會再更新一篇,詳細介紹如何處理。


我如今有一個小小的折騰羣,裏面彙集了一些喜歡折騰的小夥伴。

在不發廣告的狀況下,咱們在裏面會一塊兒聊聊軟件、HomeLab、編程上的一些問題,也會在羣裏不按期的分享一些技術沙龍的資料。

喜歡折騰的小夥伴歡迎掃碼添加好友。(請註明來源和目的,不然不會經過審覈)

關於折騰羣入羣的那些事

相關文章
相關標籤/搜索