深夜提醒

现在是深夜,建议您注意休息,不要熬夜哦~

🏮 🏮 🏮

新年快乐

祝君万事如意心想事成!

2024 桐庐半程马拉松
00:00:00
时间
0.00
距离(公里)
--:--
配速
--
步频
--
心率 (bpm)
--
配速
步频
|
share-image
ESC

ssh 反向代理

可以通过 SSH 的方式在一个内网访问另外一个内网,我们把他称为 SSH 反向代理

原理

1.首先 内网机器 10.1.100.12 通过 SSH 反向代理连接到公网服务器 121.42.110.23,并且映射一个端口给公网服务器,假设这个端口是333;
2.客户端192.168.10.11 通过隧道连接到公网 IP 的333端口,并在本地起一个 socks5 端口,通过连接这个端口实现访问10.1.100.12 网段内的资源

方法一

直接使用原生 SSH,但是该方法会导致 SSH 断网从而网络中断。不稳定

方案二

使用 autossh,本文主要讲解这个方案

内网机器A 配置

1.安装 supervisor 和 autossh

yum -y install epel-release

yum -y install supervisor autossh


2.配置 /etc/supervisord.conf,内容如下

[unix_http_server]
file=/tmp/supervisor.sock ; (the path to the socket file)

[supervisord]
logfile=/tmp/supervisord.log ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10 ; (num of main logfile rotation backups;default 10)
loglevel=info ; (log level;default info; others: debug,warn,trace)
pidfile=/tmp/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false ; (start in foreground if true;default false)
minfds=1024 ; (min. avail startup file descriptors;default 1024)
minprocs=200 ; (min. avail process descriptors;default 200)

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[program:autossh]
command=/usr/bin/autossh -M 7281 -fCNR 7280:localhost:22 root@1.1.1.1
autostart=true
startsecs=10
autorestart=true
startretries=3

其中

/usr/bin/autossh -M 7281 -fCNR 7280:localhost:22 root@1.1.1.1
  • -M 7281 启动一个监听端口,如果 ssh 端口则自动启动进程
  • -f 后台运行
  • C 压缩数据包
  • N 不允许执行远程命令
  • R 7280:localhost:22 将内网主机的22端口和 VPS 的1234端口绑定,相当于远程端口映射

在连接时候配置ssh 密钥连接,建议所有机器都做

ssh-keygen -t rsa

ssh-copy-id root@xxxxx

2.启动

systemctl enable supervisord
systemctl start supervisord

公网机器

不需要做什么特别的配置,不过建议所有的 ssh 配置都设置下下面的参数。另外放行下相关端口

UseDNS no
ClientAliveInterval 60
ClientAliveCountMax 3
GSSAPIAuthentication no
GatewayPorts yes

内网机器 B

方案1

1.以 mac 客户端为例,安装 autossh

brew install autossh

2.配置文件 ~/Library/LaunchAgents/homebrew.mxcl.autossh.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>homebrew.mxcl.autossh</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/bin/autossh</string>
<string>-M</string>
<string>8111</string>
<string>-N</string>
<string>xxx@vpn</string>
<string>-D</string>
<string>localhost:6080</string>
<string>-C</string>
<string>-i</string>
<string>/Users/wenjun/.ssh/id_rsa</string>
</array>
<key>KeepAlive</key>
<true/>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

3.设置为开机启动

launchctl load ~/Library/LaunchAgents/homebrew.mxcl.autossh.plist

4.配置 socks5 为 127.0.0.1:6080,配合 surge 可以实现根据域名代理,非常的方便。

不过似乎这种方式如果长时间不连接就有问题,我现在使用方案2

方案2

使用 SSH proxy,简单配置下即可。需要使用的时候开启下即可。

方案3

直接在服务端配置 socks5,不过这种方案安全性非常低。万一被人扫到 socks 端口会十分的不安全,不推荐。

文章作者:阿文
文章链接: https://www.awen.me/post/53554.html
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 阿文的博客
本文于 2018-07-05 20:29 发布,已超过半年(2810天),请注意甄别内容是否已过期。

评论

0 条评论
😀😃😄 😁😅😂 🤣😊😇 🙂🙃😉 😌😍🥰 😘😗😙 😚😋😛 😝😜🤪 🤨🧐🤓 😎🥸🤩 🥳😏😒 😞😔😟 😕🙁☹️ 😣😖😫 😩🥺😢 😭😤😠 😡🤬🤯 😳🥵🥶 😱😨😰 😥😓🤗 🤔🤭🤫 🤥😶😐 😑😬🙄 😯😦😧 😮😲🥱 😴🤤😪 😵🤐🥴 🤢🤮🤧 😷🤒🤕 🤑🤠😈 👿👹👺 🤡💩👻 💀☠️👽 👾🤖🎃 😺😸😹 😻😼😽 🙀😿😾 👍👎👏 🙌👐🤲 🤝🤜🤛 ✌️🤞🤟 🤘👌🤏 👈👉👆 👇☝️ 🤚🖐️🖖 👋🤙💪 🦾🖕✍️ 🙏💅🤳 💯💢💥 💫💦💨 🕳️💣💬 👁️‍🗨️🗨️🗯️ 💭💤❤️ 🧡💛💚 💙💜🖤 🤍🤎💔 ❣️💕💞 💓💗💖 💘💝💟 ☮️✝️☪️ 🕉️☸️✡️ 🔯🕎☯️ ☦️🛐 🆔⚛️🉑 ☢️☣️📴 📳🈶🈚 🈸🈺🈷️ ✴️🆚💮 🉐㊙️㊗️ 🈴🈵🈹 🈲🅰️🅱️ 🆎🆑🅾️ 🆘 🛑📛 🚫💯💢 ♨️🚷🚯 🚳🚱🔞 📵🚭 ‼️⁉️🔅 🔆〽️⚠️ 🚸🔱⚜️ 🔰♻️ 🈯💹❇️ ✳️🌐 💠Ⓜ️🌀 💤🏧🚾 🅿️🈳 🈂🛂🛃 🛄🛅🛗 🚀🛸🚁 🚉🚆🚅 ✈️🛫🛬 🛩️💺🛰️
您的评论由 AI 智能审核,一般1分钟内会展示,若不展示请确认你的评论是否符合社区和法律规范
加载中...

选择联系方式

留言反馈

😀😃😄 😁😅😂 🤣😊😇 🙂🙃😉 😌😍🥰 😘😗😙 😚😋😛 😝😜🤪 🤨🧐🤓 😎🥸🤩 🥳😏😒 😞😔😟 😕🙁☹️ 😣😖😫 😩🥺😢 😭😤😠 😡🤬🤯 😳🥵🥶 😱😨😰 😥😓🤗 🤔🤭🤫 🤥😶😐 😑😬🙄 😯😦😧 😮😲🥱 😴🤤😪 😵🤐🥴 🤢🤮🤧 😷🤒🤕 🤑🤠😈 👿👹👺 🤡💩👻 💀☠️👽 👾🤖🎃 😺😸😹 😻😼😽 🙀😿😾 👍👎👏 🙌👐🤲 🤝🤜🤛 ✌️🤞🤟 🤘👌🤏 👈👉👆 👇☝️ 🤚🖐️🖖 👋🤙💪 🦾🖕✍️ 🙏💅🤳 💯💢💥 💫💦💨 🕳️💣💬 👁️‍🗨️🗨️🗯️ 💭💤❤️ 🧡💛💚 💙💜🖤 🤍🤎💔 ❣️💕💞 💓💗💖 💘💝💟 ☮️✝️☪️ 🕉️☸️✡️ 🔯🕎☯️ ☦️🛐 🆔⚛️🉑 ☢️☣️📴 📳🈶🈚 🈸🈺🈷️ ✴️🆚💮 🉐㊙️㊗️ 🈴🈵🈹 🈲🅰️🅱️ 🆎🆑🅾️ 🆘 🛑📛 🚫💯💢 ♨️🚷🚯 🚳🚱🔞 📵🚭 ‼️⁉️🔅 🔆〽️⚠️ 🚸🔱⚜️ 🔰♻️ 🈯💹❇️ ✳️🌐 💠Ⓜ️🌀 💤🏧🚾 🅿️🈳 🈂🛂🛃 🛄🛅🛗 🚀🛸🚁 🚉🚆🚅 ✈️🛫🛬 🛩️💺🛰️