文章目录

  • 情景描述
  • 准备工作
  • 1. 服务器示例
  • 2. ssh工具
  • 3. autossh工具(重要)
  • 4. ssh免密登录
  • 5. 开机自启动
  • 一、基于ssh+nginx实现外网访问内网的web网站
  • 1. 内网服务器:建立反向代理
  • 2. 公网服务器
  • 3. 公网服务器:配置nginx
  • 4. 浏览器访问网站即可
  • 二、基于ssh实现远程访问内网服务器
  • 1. 内网服务器:建立反向代理
  • 2. 公网服务器
  • 3. 公网服务器:正向代理
  • 4. 个人电脑使用ssh远程登录内网服务
  • 参考资料


情景描述

之前在校园网内的服务器上部署了web项目,由于外网无法访问到该网站,所以使用frp内网穿透工具借助阿里云服务器代理,从而实现了外网访问该网站。但由于学校网络中心尽职尽责,检测到了我们的frp连接,说我们被黑客黑了,呵呵,并屏蔽掉了我们的公网ip。frp方式会被检测到,不得不寻找其他方法。

一种实测可行的方案是建立云服务器与内网服务器之间的ssh连接,通过ssh传输数据,从而实现内网穿透。目前还不确定能否被网络中心误判为“黑客程序”。

准备工作

1. 服务器示例

ssh

注意:上表提供的端口请保证不被防火墙挡住,保证云服务器端口已添加到安全组。一般国内云服务器(如阿里云)需要提前在官网后台添加安全组规则,以开放该端口。
为安全起见,建议不要直接使用root用户去做下文的操作,新建一个权限比较低的普通用户。

2. ssh工具

apt install openssh-server
service ssh restart
ssh -fCNRssh -fCNL
-f 后台执行ssh指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机(服务器)的某个端口转发到本地主机指定的端口
-L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口
-p 指定远程主机的端口

3. autossh工具(重要)

sshautosshsshautossh
  • 安装
apt install autossh
ssh反向代理实现内网穿透;ssh+nginx实现公网云服务器代理访问内网服务器sshssh
autossh -M 8999
8999

4. ssh免密登录

~/.ssh/id_rsa~/.ssh/id_rsa.pubEnter
ssh-keygen
~/.ssh/id_rsa.pub~/.ssh/authorized_keys
ssh-copy-id user_gong@100.100.100.100
sshautossh

5. 开机自启动

sshautossh
sshautossh

 

一、基于ssh+nginx实现外网访问内网的web网站

8000

1. 内网服务器:建立反向代理

80008001
ssh -fCNR 8001:localhost:8000 -o ServerAliveInterval=60 user_gong@100.100.100.100 -p 22
# ssh -fCNR [公网IP(可省略)]:[公网端口]:[内网IP]:[内网端口] [公网用户名@公网IP] -p [公网ssh端口(默认22)]
# 或者使用autossh:
# autossh -M 8999 -CNR 8001:localhost:8000 user_gong@100.100.100.100 -p 22
-o ServerAliveInterval=60
ps aux | grep ssh

2. 公网服务器

查看是否成功建立了连接

netstat -antpul | grep 8001


127.0.0.1:8001

3. 公网服务器:配置nginx

8001http(s)8001
  • 安装nginx:
apt update
apt install nginx
  • 创建配置文件
vim /etc/nginx/conf.d/ssh_agent_8001.conf
ssh_agent_8001.confhttphttps443
server {
        listen 80;
        server_name _(填写域名,不填的话请删除这个括号内容);
 
        location / {
            proxy_pass http://127.0.0.1:8001;
            proxy_redirect  off;
            proxy_set_header  Host  $host;
            proxy_set_header  X-Real-IP  $remote_addr;
            proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}
  • 重启nginx使配置生效
service nginx restart

4. 浏览器访问网站即可

 

二、基于ssh实现远程访问内网服务器

1. 内网服务器:建立反向代理

228022
ssh -fCNR 8022:localhost:22 -o ServerAliveInterval=60 user_gong@100.100.100.100 -p 22
# ssh -fCNR [公网IP(可省略)]:[公网端口]:[本机IP]:[本机端口] [公网用户名@公网IP] -p [公网ssh端口(默认22)]
# 或者使用autossh:
# autossh -M 8999 -CNR 8022:localhost:22 user_gong@100.100.100.100 -p 22
802222
ps aux | grep ssh

2. 公网服务器

  • 查看是否成功建立了连接
netstat -antpul | grep 8022
lsof
lsof -i:8022
  • 至此,我们就可以在公网服务器上直接访问内网内网了!
  • 从公网服务器的终端上直接登录到内网服务器:
ssh user_nei@localhost -p 8022
/home/
scp -P 8022 filename user_nei@localhost:/home/

3. 公网服务器:正向代理

80228022
80238022*
ssh -fCNL *:8023:localhost:8022 -o ServerAliveInterval=60 user_gong@localhost -p 22
# ssh -fCNL [本机IP(可省略)]:[本机端口]:[远端IP]:[远端端口] [远端用户名@远端IP] -p [远端ssh端口(默认22)]
# 或者使用autossh:
# autossh -M 8999 -CNL *:8023:localhost:8022 user_gong@localhost -p 22
80238022
ps aux | grep ssh

4. 个人电脑使用ssh远程登录内网服务

ssh user_nei@100.100.100.100 -p 8023
# ssh [内网服务器用户名]@[公网服务器IP] -p [代理端口]
  • 可能遇到的问题

    请前往内网服务器执行
apt install openssh-server
service ssh restart

阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。