前言
最近想学习调试mysql代码,但是自己随身携带的笔记本Mac, 不是很方便调试(不想直接用root跑东西)。但是家里有一台吃灰的游戏本,性能还不错。于是格式化了一半硬盘,装了win+ubuntu22.04 双系统。在ubuntu22.04编译调试mysql代码,比较快也比较方便。不足之处是ubuntu下不好做笔记,游戏本也不好携带移动办公。于是用frp做了ssh打通。本文记录一下配置方案。
环境条件
PC: win + ubuntu22.04
Mac: 办公访问
云主机: 1c2g 2c4g
(2 弹性ip 假设A:192.168.0.50 B: 192.168.0.51)
这里一台也够了。我是用一个弹性ip当跳板机。
部署
云主机 A当作服务端。
# 1 下载包
https://github.com/fatedier/frp/releases/download/v0.59.0/frp_0.59.0_linux_amd64.tar.gz
在具有公网 IP 的机器上部署 frps
部署 frps 并编辑 frps.toml 文件。以下是简化的配置,其中设置了 frp 服务器用于接收客户端连接的端口:
配置文件
#cat frps.toml
bindPort = 7000
启动
./frps -c frps.toml
ps: 最好用systemd配置成服务的方式(参考 https://gofrp.org/zh-cn/docs/setup/systemd/)。
客户端1 ubuntu22.04
1、下载包并解压(同上) 2 、配置文件
#cat frpc.toml
serverAddr = "x.x.x.x"
serverPort = 7000
# 如果默认的 STUN 服务器不可用,可以配置一个新的 STUN 服务器
# natHoleStunServer = "xxx"
[[proxies]]
name = "p2p_ssh"
type = "xtcp"
# 只有共享密钥 (secretKey) 与服务器端一致的用户才能访问该服务
secretKey = "abcdefg"
localIP = "127.0.0.1"
localPort = 22
3、启动
./frpc -c frpc.toml
客户端2 (访问端)
1、下载包并解压(同上) 2 、配置文件
#cat frpc.toml
serverAddr = "x.x.x.x"
serverPort = 7000
# 如果默认的 STUN 服务器不可用,可以配置一个新的 STUN 服务器
# natHoleStunServer = "xxx"
[[visitors]]
name = "p2p_ssh_visitor"
type = "xtcp"
# 要访问的 P2P 代理的名称
serverName = "p2p_ssh"
secretKey = "abcdefg"
# 绑定本地端口以访问 SSH 服务
bindAddr = "127.0.0.1"
bindPort = 6000
# 如果需要自动保持隧道打开,将其设置为 true
# keepTunnelOpen = false
3、启动
./frpc -c frpc.toml
验证结果
在Mac登录云主机2,然后ssh到ubuntu22.04.
使用 SSH 命令访问内网机器(客户端1),假设用户名为 test:
ssh -o Port=6000 test@127.0.0.1
注意事项
1 报错处理
ubuntu机器需要开启sshd服务,要不然会报错。客户端2报错同时,客户端1(ubuntu2204)报错
connect to local service[127.0.0.1:22] error: dial tcp 127.0.0.1:22 connect: connection refused
解决方案:
apt install ssh
2 相关端口和防火墙设置
6000、7000、防火墙设置
后记
参考了网上一些文章。不是很实(cai)用(keng)。总结一下给大家参考。
这个方案也可以用作一些软件远程交付,打通远程机器ssh,方便运维。
参考文献: 1、https://gofrp.org/zh-cn/docs/examples/xtcp/
欢迎关注公众号:DBA札记,一起交流数据库技术。欢迎觉得读完本文有收获,可以转发给其他朋友,大家一起学习进步!谢谢大家。