计划赶不上变化

导航

ssh的反向代理

记录一下因为项目上需要一个公网ip的端口接收数据,但是目前环境并不是公网ip,所以就只能用到ssh的反向代理

ssh 反向代理 - 不拨牙 - 博客园 (cnblogs.com) 参考的是这个博客

因为是临时的使用就不去研究这么多原理了,正好之前想要在外访问家里的服务器,真不错,学有所用了。 

总结一下:

准备  一个公网ip (因为我家是移动,搞不到公网ip,只能用腾讯云服务器提供的公网ip) 一台家用的机器 

公网ip 称为A机器  ip 101.230.2.23   name:tengxun

家用电脑 称为B机器  ip 192.168.2.22  name:jiayong

首先安装ssh 和autossh

1.机器A上配置sshd 

  sudo  vim /etc/ssh/sshd_config

  配置GatewayPorts为yes

  重启 sshd    sudo service sshd restart

2.在B机器上输入ssh-copy-id  tengxun@101.230.2.23  免密登录

3.在B机器上输入 autossh -M 23332 -NR 23333:localhost:22  tengxun@101.230.2.23   然后会运行卡住      然后在任意机器上运行  ssh jiayong@101.230.2.23 -p  23333  就可以进入B机器了

注意:这里面的23332 和23333在A机器必须允许在防火墙打开  ,如果是腾讯云或者阿里云必须要在安全组里面添加上,否则不会通的。可以通过以下两条命令来开放端口

sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
sudo firewall-cmd --reload

sudo firewall-cmd --zone=public  --list-ports

上面测试成功就说明两边已经通了

下面继续反向隧道自启动  

sudo vim /etc/systemd/system/autossh.service 创建新的文件

里面内容为

[Unit]
Description=autossh
[Service]
ExecStart=/usr/bin/autossh -M 23332 -NR 23333:localhost:22 tengxun@101.230.2.23 -i /home/xxx/.ssh/id_rsa -o StrictHostKeyChecking=no
[Install]
WantedBy=multi-user.targe

 

然后在B机器运行

sudo systemctl daemon-reload

sudo systemctl enable autossh.service

sudo systemctl start autossh.service

sudo systemctl status autossh.service

以后开机的时候都会运行的。

这个功能也就这样结束了,还是挺好的。

 

 

2026年更新

-----------------------------------------------------------------------优雅的分界线--------------------------------------------------------------------------------------

现在有一个最新的 很快很简单  https://github.com/fatedier/frp/releases 

下载一个版本frp frp_0.71.0_linux_amd64.tar.gz

 在公网服务器上解压  删除掉client的内容 保留如下

root@iZ0xia1g:~/code/frp/frp_0.71.0_linux_amd64# ls
frps frps.toml LICENSE

修改 frps.toml内容如下

# 服务端与客户端绑定的通信端口(必须确保云服务器安全组和本地防火墙已放行此端口)
bindPort = 7000

# 身份认证配置
auth.method = "token"
# 相当于连接密码,建议修改为复杂的随机字符串,防止被他人恶意接入
auth.token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# (可选)Web 仪表盘配置,用于在浏览器监控 FRP 状态
webServer.addr = "0.0.0.0"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "admin"

-------------------------------------------------------------------------------------优雅的分界线--------------------------------------------------------------------------------------------

内网的也是 一定要下载相同版本的frp

保留下frpc的内容

y@hine:~/code/frp/frp_0.71.0_linux_amd64$ ls
frpc frpc.toml LICENSE

修改frpc.toml 如下

# 公网服务器的 IP 地址
serverAddr = "47.273.164.1"
# 与服务端配置的 bindPort 保持一致
serverPort = 7000

# 身份认证(必须与服务端 token 完全一致)
auth.method = "token"
auth.token = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

# 定义需要穿透的 SSH 服务

[[proxies]]
name = "ssh"
type = "tcp"
localIP = "127.0.0.1"
localPort = 22
# 映射到公网服务器的端口(外部访问此端口即可连入内网)
remotePort = 6000

分别运行sudo ./frpc -c ./frpc.toml

sudo ./frps -c ./frps.toml 就可以实现内网穿透了  

每次开机都要运行对应的服务 。不管是放在.bashrc  还是systemd 还是启懂脚本里 都可以

一般建议放在 systemd  下面是frpc的  frps的同理

sudo vim /etc/systemd/system/frpc.service

[Unit]
Description=Frp Client
After=network.target

[Service]
User=root
WorkingDirectory=/你的frp解压绝对路径
ExecStart=/你的frp解压绝对路径/frpc -c /你的frp解压绝对路径/frpc.toml
Restart=on-failure

[Install]
WantedBy=multi-user.target

sudo systemctl daemon-reload

sudo systemctl start frpc

sudo systemctl enable frpc

 

posted on 2022-04-24 20:49  张培粉  阅读(575)  评论(0)    收藏  举报