SSH 内网穿透与反向代理

环境

内网主机archlinux系统,公网阿里云或者其它云主机一台。
## 内网也可以是openwrt OR lede固件的路由器,支持ssh就行。

云主机配置

# nano /etc/ssh/sshd_config

去掉GatewayPorts前面的#号,并把no改成yes
同时也去掉下面两项的#并修改

TCPKeepAlive yes
ClientAliveInterval 60     #60代表每一分钟查检一次客户端的连接情况
ClientAliveCountMax 3      # 检查3次,客户端无响应则中断连接

创建一个用于穿透的普通账号

# useradd -m proxyuser    #不同系统创建用户的方法不同
# passwd proxyuser

重启sshd服务systemctl restart sshd

内网archlinux主机配置

安装autossh来运行穿透,防掉线

$ sudo pacman -Suy
$ sudo pacman -S autossh

新建普通用户用于穿透

$ sudo useradd -m autosshuser
$ sudo passwd autosshuser

创建SSH钥匙并上传到云主机

$ su  - autosshuser
$ ssh-keygen -t 'rsa' -b '4096' -C 'autosshuser@hostname'    //hostname填写当前主机名,注意该密钥不要设置密码,尽管一路回车,不要输入额外的字符。
$ ssh-copy-id proxyuser@yunIP     //yunIP 可以是你的云主机IP或者域名

运行autossh反向代理

$ autossh -p 2222 -M 8181 -fCNR '*:8080:localhost:80' proxyuser@yunIP -i /home/autosshuser/.ssh/id_rsa

-p 2222是指云主机的SSHD端口,默认是22,若有修改请指定。
-M 参数指定的端口用来监听隧道的状态,与端口转发无关。
-f 静默运行。
-C 数据压缩,网速快不要加。
-N 不执行任何指令。
-R 使用远程端口转发。
NR通常是共同使用。
现在可以使用http://yunIP:8080来访问你本机的80端口了,*:8080:localhost:80 中的localhost:80 , 也要可以改成内网中其实的主机,如 192.168.1.1:80 ,就可以用http://yunIP:8080访问路由。

以服务运行autossh
$ sudo nano  /usr/lib/systemd/system/autossh.service

添加内容

[Unit]
Description=Auto SSH Tunnel
After=network.target

[Service]
User=autossh
Type=simple
ExecStart=/bin/autossh -p 2222 -M 8181 -fCNR '*:8080:localhost:80' proxyuser@yunIP -i /home/autosshuser/.ssh/id_rsa
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=always

[Install]
WantedBy=multi-user.target

注意不要照抄我的配置 ,里面的参数还需要你自己改,特别是yunIP/bin/autossh路径。

加载和启动服务
$ sudo systemctl daemon-reload
$ sudo systemctl enable autossh
$ sudo systemctl start autossh

有问题请留言。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容