由于经常异地办公, 对于市面上的远程桌面工具, 无论速度、收费、画面模糊等, 都不如 windows 自带的远程桌面, 但异地如何使用 windows 远程桌面呢?
是否可以无需远程桌面, 直接浏览器访问公司的内网 WEB, 登录内网 GIT, 内网 SSH, 远程 VS CODE 调试等等, 就跟在公司一模一样?
注: 作者开发该项目的初衷,是方便自己的同时,方便大家,提升热度,希望对未来有所帮助。该项目仅用于学习研究, 目前没有任何商业合作,更没有任何恶意行为。如果未来有广告之类盈利的行为,会郑重告知大家。另外声明:严禁用于违法行为!!!
-
两台主机之间直连!直连!直连!不经过第三方服务器, 不用担心数据隐私泄露
-
一条命令搞定, 无需安装、无需注册, 无需公网 IP, 无需配置文件
-
直连基于 QUIC, 高性能, 已加密
注: 1.1.6 版本开始加强了通信安全, 因此和老版本不兼容
-
本程序即支持命令行方式, 也支持 docker 方式, windows 版本也新增了 UI 使用更简单。以下举例仅作参考, 可随意切换
-
两端主机运行同一个程序, 一端主机使用--remote 选项(以下称 remote 端), 另一端主机使用--local 选项(以下称 local 端)
-
local 端和 remote 端之间是直连的, 不经过第三方服务器
-
可以在 local 端访问 remote 端, 但是反过来不可以
-
可以多个 local 端对应一个 remote 端, 但一个 local 端不能对应多个 remote 端。通过相同的密钥(--key)确认对应关系
-
如果需要反过来, 或者需要访问多个 remote 端, 就需要运行多个程序或启动多个 Docker
-
由于直连过程复杂, 会出现反复重试, 通常 10 分钟内成功。如果长时间无法连接, 点反馈我解决
-
windows 自带杀毒软件, 会将所有 go 语言写的程序都认为是病毒。本程序已开源, 可放心食用
-
以下举例说明中的密钥(--key), 请不要使用, 否则会连上别人的 remote 端, 或者被别人的 local 端连上。自己定义一个 16-24 字节长度的密钥
-
1024 以下是操作系统的保留端口, 基本都被占用了, local 端请使用 1024 以上端口。例如 linux 系统可以使用命令
netstat -anp|grep 22
判断 22 端口是否已被占用 -
该项目刚刚起步, 功能还不完善, 欢迎到 Issues 上提出问题和建议, 帮忙测试的同学将保证永久免费使用
-
UI版本是从1.4才开发(goodlink-windows-amd64-ui.zip),但1.4还不稳定,未提交Docker(停留在1.3), 因此暂时不建议1.4搭配Docker使用,直到这一行文字被删除。如果无法使用, 请切换1.3正式版
Remote端 | Local端 | P2P成功 |
---|---|---|
NAT1-3 | NAT1-3 | YES |
NAT1-2 | NAT4 | YES |
NAT4 | NAT1-2 | YES |
NAT3-4 | NAT3-4 | 由于运营商算法调整,不保证100% |
local端需要指定本地端口, 以提供Socks5代理服务
local端需要在系统或者软件中配置Socket5代理, 便可访问remote端所处网络中的所有主机端口
remote端需要指定所处网络中的某一个主机端口, local端也需要指定本地端口
local端无需配置Socks5代理, 直接访问指定的本地端口, 就等于访问remote端指定的主机端口。但也只能访问这一个主机端口
注: 转发模式仅支持TCP协议, 一个remote端只能转发一个端口, 可运行多个remote端
目标: 在家里电脑(或出差电脑)浏览器上配置代理: socks5://127.0.0.1:18080, 访问公司所有内网 WEB, 和在公司无异
注: 浏览器可商店安装插件 SwitchyOmega 配置 socks5 代理。其他 GIT, SVN, SSH 等等, 也都支持 socks5 代理, 可以百度搜索
注: 当最下方的按钮变成绿色, 表示启动成功
注: 当最下方的按钮变成绿色, 表示连接成功。如果超过 10 分钟无法连接, 按照下图先“点击关闭”, 然后选择“主动连接”, 再“点击启动”
目标: 在公司电脑上配置代理: socks5://127.0.0.1:18080, 访问家里包括 NAS 在内的所有主机端口
docker rm goodlink -f; docker run -d --name=goodlink --net=host --restart=always registry.cn-shanghai.aliyuncs.com/kony/goodlink --key=nas_202412140928
./goodlink-linux-amd64 --key=nas_202412140928
.\goodlink-windows-amd64.exe --key=nas_202412140928
注: 当最下方的按钮变成绿色, 表示已连接成功
docker rm goodlink -f; docker run -d --name=goodlink --net=host --restart=always registry.cn-shanghai.aliyuncs.com/kony/goodlink --local=127.0.0.1:18080 --key=nas_202412140928
./goodlink-linux-amd64 --local=127.0.0.1:18080 --key=nas_202412140928
.\goodlink-windows-amd64.exe --local=127.0.0.1:18080 --key=nas_202412140928
目标: 在家里电脑(或出差电脑), 打开 windows 远程桌面, 连接 127.0.0.1:13389, 访问公司电脑的远程桌面
注: 不是所有软件都支持 Socket5 代理, 比如 windows 自带远程桌面, 这时可用转发模式, 将公司电脑的 3389 端口和家里电脑(或出差电脑)的 13389 端口绑定(本机远程桌面服务已占用 3389 端口)。还有一个场景,出于安全考虑, 只希望 Remote 端指定的主机端口能被访问
注: 当最下方的按钮变成绿色, 表示启动成功
注: 当最下方的按钮变成绿色, 表示连接成功。如果超过 10 分钟无法连接, 按照下图先“点击关闭”, 然后选择“主动连接”, 再“点击启动”
目标: 在公司访问 http://127.0.0.1:9999 , 等于访问家里的 NAS 管理页面http://192.168.3.2:9999
docker rm goodlink -f; docker run -d --name=goodlink --net=host --restart=always registry.cn-shanghai.aliyuncs.com/kony/goodlink --remote=192.168.3.2:9999 --key=nas_202412140928
./goodlink-linux-amd64 --remote=192.168.3.2:9999 --key=nas_202412140928
.\goodlink-windows-amd64.exe --remote=192.168.3.2:9999 --key=nas_202412140928
注: 当最下方的按钮变成绿色, 表示已连接成功
docker rm goodlink -f; docker run -d --name=goodlink --net=host --restart=always registry.cn-shanghai.aliyuncs.com/kony/goodlink --local=127.0.0.1:9999 --key=nas_202412140928
./goodlink-linux-amd64 --local=127.0.0.1:9999 --key=nas_202412140928
.\goodlink-windows-amd64.exe --local=127.0.0.1:9999 --key=nas_202412140928
root@VM-4-9-ubuntu:~/go/src/goodlink# ./bin/goodlink-linux-amd64 -h
Usage of bin/goodlink-linux-amd64:
--remote string
remote端所处网络中, 需要被远程访问的主机地址端口。若不加这个选项, 就是代理模式
--local string
local端监听的地址端口
--key string
用于加密通信的密钥, 自己随便定义, local端和remote端必须一致。建议16-24个字节长度, 防止冲突: {name}_{YYYYMMDDHHMM}, 例如: kony_202412140928
--conn int
由于remote和local两端默认使用的算法不一样, 如果出现超过10分钟无法连接的情况, 可能是其中一端和默认的算法不兼容,
此时可在local端增加 "--conn=1" 选项, 以调换两端的算法, 就能连接了