ssh反向隧道实现公网ssh校园网服务器


写在前面

寒假回来不知道为什么实验室的ssh突然寄掉了,捣鼓了两天也没找到问题。

恰巧大佬舍友也寄了,参考他的博客实现ssh反向隧道https://blog.boulevard.asia/2025/02/15/ssh-tunnel/


反向隧道原理

借用一个图来直观的说明(手动感谢佬QAQ)

我们把位于公网的叫B、位于内网的叫Server,访问设备叫Client
要做的就是:

  1. 使Client可以ssh到B
  2. 在B和Server之间建立隧道,并配置好端口转发(例如将将阿里云的10022端口映射到校园网服务器的22端口)

公网上的阿里云服务器配置

【注】先走通逻辑,后面再搞密钥登入的事情

  1. 申请
    申请一个阿里云服务器,并完成密码等基础配置,开机

  1. 进行基础的安全配置

打开新的ssh端口

sudo ufw allow 2222/tcp
sudo vim /etc/ssh/sshd_config
# 并增加以下字段
Port 2222           # 使用2222端口进行ssh链接
GatewayPorts yes    # 允许远程主机连接到本地端口转发
TCPKeepAlive yes    # 允许发送 TCP KeepAlive 数据包以保持连接活动状态
ClientAliveInterval 60  # SSH 服务器向客户端发送心跳消息的间隔时间
##
sudo systemctl restart ssh
sudo systemctl restart sshd

关闭高危端口

关闭22、20、21等高危端口

sudo ufw status verbose
sudo ufw delete allow 20/tcp
sudo ufw delete allow 21/tcp
sudo ufw delete allow 22/tcp

并在阿里云的管理界面删除22端口的开放,增加2222端口的开放


  1. 进行端口转发配置

阿里云的管理界面增加222端口的开放(用于端口转发)


内网服务器端配置

# 1. 安装autossh
sudo apt install autossh

# 2. 打开反向代理
autossh -M 0 -N -R 222:localhost:22 -p 2222 root@阿里云IP -o "ServerAliveInterval 30"
-M 0    :      使用公网服务器的0端口监听连接状态
-N      :      不执行远程指令
-R      :       建立远程连接并指定将内网服务器本地的22端口映射到公网服务器的222端口
-o "ServerAliveInterval 30"   :   30s一个alive包    

client

ssh -J root@阿里云IP:2222 内网用户名@localhost -p 222
or
ssh root@阿里云IP -p 2222
ssh 内网用户名@localhost -p 222

ssh密钥配置及config配置

  1. client和公网服务器的密钥
    client端
# 签名密钥生成和公钥的保存
ssh-keygen -t rsa -b 4096 -C "注释" -f filepath_to_sshdir/sshkeyfilename
ssh-copy-id -i filepath_to_sshdir/sshkeyfilename.pub root@阿里云IP -p 50022
# 同时
将'filepath_to_sshdir/sshkeyfilename.pub'中的内容搞到'内网服务器的~/.ssh/authorized_keys'中

# 打开.ssh目录下的config
## linux
sudo vim ~/.ssh/config
## windows
C:\Users\yourUsername\.ssh\config

## 写入以下内容
Host jumpbox
  HostName 阿里云IP
  Port 2222
  User root
  IdentityFile C:\Users\yourUsername\.ssh\sshkeyfilename

Host linux_aliyun_host
  HostName localhost
  User 内网用户名
  Port 222
  ProxyJump jumpbox
  IdentityFile C:\Users\yourUsername\.ssh\sshkeyfilename
##

此时,client端使用以下命令登录:

ssh linux_aliyun_host

现在,妈妈再也不用担心我连不上ssh了

posted @ 2025-02-19 20:47  超超不会写代码  阅读(163)  评论(0)    收藏  举报