frp实现远程ssh访问家里PC笔记本

文摘   2024-08-28 22:14   上海  

前言

最近想学习调试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札记,一起交流数据库技术。欢迎觉得读完本文有收获,可以转发给其他朋友,大家一起学习进步!谢谢大家。

DBA札记
dba 数据库 知识科普 踩坑指南 经验分享 原理解读
 最新文章