本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0)

本文作者: 苏洋

创建时间: 2019年03月11日 统计字数: 4300字 阅读时间: 9分钟阅读 本文链接: https://soulteary.com/2019/03/11/mac-osx-remote-management.html


远程管理 Mac OSX 设备

开发设备一般开放 SSH 端口和访问权限就能够满足几乎所有需求,但是如果设备换成了 Windows 或者 OSX ,这个事情就没有那么简单了,偶尔还是需要登录图形界面做一些事情。对于我这种家里局域网有完整开发环境的折腾控,远程管理 OSX 设备的需求就出现了。

如果你使用类似 AnyConnect 的方式去连接专有网络进行开发,这个事情可以相对容易的解决,但是会额外带来一个问题:你的所有流量都会走目标设备。

而如果使用本地端口转发、系统PROXY的方案来做,有些客户端又支持的不是很好,比如我一直在使用的 Remotix ,我购买这款软件有好几年了,它能够让我在笔记本、平板、甚至是手机上解决一些问题,但是一旦我离开局域网环境,它的“假期就开始了”。

本文将花费十五分钟的时间,解决这个问题。

反向代理指定应用端口

相比较全部流量都走目标设备,这个方案明显更合理。当然,你也可以选择配置路由表解决上面的问题,不过如果目标设备有多台,分布于多个位置,难道我们要不停切换网络连接状态吗。

这里用到的技术方案主要是:流量反向代理。

我选择的工具是 github.com/fatedier/fr…,选择它的原因很简单,它的代码开源。

这个方案需要一台位于公网的服务器,前一阵清理服务,正好空闲了两台,拿来做这个事情再适合不过了。

配置服务端

这里的服务端是具备公网 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.0dashboard_addr = 0.0.0.0
dashboard_addr = 8080
dashboard_user = homelab_user
dashboard_pwd  = homelab_passtoken = token_used_by_server_and_clientmax_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.gzmkdir -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_clientadmin_port = 8080
admin_user = homelab_client
admin_pwd  = homelab_clientpool_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 系统上的进程管理,上一篇文章已经提到过,这里不做赘述,简单提供一个 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、编程上的一些问题,也会在群里不定期的分享一些技术沙龙的资料。

喜欢折腾的小伙伴欢迎扫码添加好友。(请注明来源和目的,否则不会通过审核)

关于折腾群入群的那些事

转载于:https://juejin.im/post/5c85f78ee51d45192c4a6e71

远程管理 Mac OSX 设备相关推荐

  1. 远程管理MAC OS

    Mac OS X 的要远程连接 Windows,直接使用微软的 RDC(Remote Desktop Connection) 就可以啦,不过要想在 Mac OS X 上远程以图形界面来访问另一台 Ma ...

  2. VRP远程管理(华为设备telnet登录密码配置与测试环境搭建)——在物理机上创建回环网卡及eNSP模拟器与物理机实现连接通信

    目录 一.在网络连通的情况下,开启telnet服务 二.用户认证配置 1. 密码认证模式 2. aaa认证模式 三.eNSP模拟器telnet测试环境搭建 1.在物理机上创建回环网卡及IP地址配置 2 ...

  3. 安卓设备远程管理软件

    现在,安卓设备广泛应用于各类智能硬件,有时候我们需要远程管理这些安卓设备.远程管理软件使 IT 管理员能够从任何地方控制和管理安卓设备,确保它们安全.最新并以最佳水平运行.在本文中,我们将介绍一些当前 ...

  4. 惊!莫让远程管理软件为僵尸网络做贡献

    在过去几年中,很多IT部门经历了重大的变化,特别是对于设备和应用的支持和管理.移动用户.分散的办公室以及各种虚拟化解决方案让IT专业人员几乎无法维持传统的现场支持. 在远处的攻击活动 有些企业使用远程 ...

  5. 修改telnet的用户名密码_远程管理设备telnet的N种设置方法

    作为一名网络工程师,日常管理和配置设备,可以选择的方法有很多,很多(如下图), 但是最常用的配置手段,任然是本地使用console口,远程使用telnet(或SSH),本文以思科设备演示几种telne ...

  6. 「兼容M1」Royal TSX for Mac 最强远程管理软件

    Royal TSX mac版是mac系统上一款功能非常强大的远程连接管理工具.兼容多种连接类型,比如:RDP.VNC.基于SSH连接的终端,支持sfTP/FTP/SCP或基于Web的连接管理,Roya ...

  7. Cisco/华为 远程管理设备telnet的N种设置方法

    前言: Telnet协议是Internet远程登录服务的标准协议和主要方式.它为用户提供了在本地计算机上远程管理主机的能力.使用者在自己的电脑上使用Telnet程序连接到服务器.然后,在Telnet程 ...

  8. mac mini 储存文件的服务器,另一种“NAS”的玩法---mac系统的远程管理和文件共享...

    另一种"NAS"的玩法---mac系统的远程管理和文件共享 2019-12-28 17:00:00 8点赞 111收藏 24评论 自从我用矿渣蜗牛星际装黑群晖之后系统崩溃,费劲力气 ...

  9. telnet配置设备远程管理—eNSP

    案例:给路由器配置远程管理,使一台路由器远程管理另一台. 所需设备:两台路由器,一根网线 图示 一.给两台设备配置IP地址 AR1(以下命令) a. sy b. int g0/0/0 c. ip ad ...

最新文章

  1. SAP UI5 视图控制器 View Controller 的生命周期方法 - Lifecycle methods
  2. 探索PCIe 3.0峰值性能,长江存储推新消费级固态硬盘致态TiPlus5000
  3. 大学计算机专业绩点3.7什么水平,大学绩点3.0什么水平 大学里的绩点有什么用...
  4. 适合做短视频电商的人群分类
  5. sql字符串函数_SQL字符串函数概述
  6. openwrt中luci学习笔记
  7. [安全]在Windows日志里发现入侵痕迹(转载)
  8. PHP+实验室安全系统 毕业设计 -附源码191610
  9. “只用 1 分钟” - 超简极速 Apk 签名 多渠道打包神器
  10. css缓慢执行hover
  11. 解决Mac电脑连不上wifi的问题
  12. turtle库——绘制八边形、八角图形以及叠边形图形
  13. ACME网站证书自动化保姆级教程
  14. vue项目的目录结构图及目录详解
  15. 设计模式GOF23之-------------------结构型模式(适配器模式、代理模式、桥接模式、装饰模式、组合模式、外观模式、享元模式)
  16. 注册Outlook如何跳过手机验证
  17. 燃气缴费显示服务器内部错误,燃气热水器常见故障代码、原因及维修方法
  18. unity读写Excel
  19. Linux Redis清理缓存
  20. 掌握这些技巧,轻松入门人工智能论文

热门文章

  1. JUnit测试用例– Eclipse和Maven
  2. android自定义对话框_Android自定义提醒对话框
  3. scala几种循环判断语句_Scala循环控制语句– while,while和for循环
  4. C++正则表达式创建匿名函数
  5. ROS的学习(十五)验证publisher和subscriber
  6. C++基础知识(六)函数
  7. phalapi-进阶篇3(自动加载和拦截器)
  8. Android study week1
  9. 正则式获取特定标识的字符串并替换
  10. Android Studio 使用笔记:工具窗口浮动与布局恢复