跳板:公网服务器

前言

        学校的内网服务器非常好用,并且在校期间无额外收费,但是国庆回家了,连不上,急.便有了

 

一.申请阿里云免费试用服务器

        具体步骤就是注册账号,实名认证,找到适用,找一个配置一般般,能用的服务器

        有大佬写过文章,这里就不说了

二.配置

        问题描述:
                - 公网服务器(具有公网 IP 的机器)充当跳板机,将流量转发到内网主机。
                - 通过公网服务器的端口 2222 访问内网主机的 SSH 服务。

 

     1. 在内网主机配置反向 SSH 隧道

        首先,在 内网主机 上使用 SSH 反向隧道将其端口暴露在公网服务器上。

    ssh -N -R 2222:localhost:22 user@PUBLIC_IP

        解释:
                - `-N`: 只执行端口转发,不执行远程命令。
                - `-R 2222:localhost:22`: 将公网服务器的 2222 端口转发到内网主机的 22 端口。
                - `user@PUBLIC_IP`: 连接到公网服务器,`user` 是公网服务器上的用户名,`PUBLIC_IP` 是其公网 IP 地址。

        此时,在公网服务器上对 2222 端口的访问将被转发到内网主机的 SSH 服务。

        2. 自动化反向 SSH 隧道


                为了让内网主机开机自动建立反向隧道,我们选择使用 `autossh` 创建一个系统服务。

                a. 安装 `autossh`:

sudo apt-get install autossh

                b. 创建服务文件:

   sudo nano /etc/systemd/system/reverse-tunnel.service

                c. 服务文件内容如下

 

(根据实际情况替换 `user` 和 `PUBLIC_IP`)
   

[Unit]
   Description=AutoSSH reverse tunnel service
   After=network.target

[Service]
   Environment="AUTOSSH_GATETIME=0"
   ExecStart=/usr/bin/autossh -M 0 -N -o "StrictHostKeyChecking=no" -R 2222:localhost:22 user@PUBLIC_IP -i /home/username/.ssh/id_rsa
   Restart=always
   RestartSec=60

[Install]
   WantedBy=multi-user.target

                这里的/home/username/.ssh/id_rsa 是本地主机的,使用'username'要替换为你需要的,如果不知道换成谁(比如有多个用户),你可以换成当前用户

whoami

                d. 保存后,执行以下命令使服务生效:

sudo systemctl daemon-reload
sudo systemctl enable reverse-tunnel.service
sudo systemctl start reverse-tunnel.service
sudo systemctl status reverse-tunnel.service

三. 在公网服务器上测试访问


        在 公网服务器 上,尝试通过本地 2222 端口连接到内网主机的 SSH 服务:

ssh -p 2222 localhost

        这应该可以直接连接到内网主机。

四.从其他机器连接


        现在,你可以从其他机器通过公网服务器的 IP 地址和 2222 端口访问内网主机:

ssh -p 2222 user@PUBLIC_IP

        - `user` 是内网主机上的用户。
        - `PUBLIC_IP` 是公网服务器的 IP 地址。

注意事项
        

1.公网服务器的防火墙

确保公网服务器允许 2222 端口的入站流量:
 

  sudo ufw allow 2222/tcp

2. SSH 配置

确保公网服务器的 `/etc/ssh/sshd_config` 文件允许远程端口转发:

    AllowTcpForwarding yes
    GatewayPorts yes

通过这些步骤,理论上应该可以成功实现通过公网服务器访问内网主机的目的
至少我成功了

------------------------------

10.5

        出现了新的问题:

        关闭会话后想再开启,将会超时(timeout)

根据分析,猜测应该是关闭后本地服务器没有再次发出连接,因此服务关闭了

于是:

     本地和公网(必须)修改
        1.编辑配置

sudo nano /etc/ssh/sshd_config

        2.查找并取消注释(没有则添加)

AllowTcpForwarding yes       # 允许端口转发
GatewayPorts yes             # 允许远程客户端绑定端口
ClientAliveInterval 60       # 保持SSH会话活跃,防止超时断开
ClientAliveCountMax 3        # SSH允许最多3次未响应后断开

        3.修改服务

 

   sudo nano /etc/systemd/system/reverse-tunnel.service

        变更ExecStart  

ExecStart=/usr/bin/autossh -M 20000 -N -o "ServerAliveInterval=60" -o "ServerAliveCountMax=3" ... #之后不变

        4.重启服务

sudo systemctl daemon-reload
sudo systemctl restart reverse-tunnel.service
sudo systemctl status reverse-tunnel.service

应该没问题了

 

### 如何配置Windows服务器作为跳板进行远程管理或访问 #### 使用SSH客户端工具配置Windows作为跳板 为了使Windows服务器能够充当跳板,需要安装并配置OpenSSH服务。这允许其他器通过该Windows服务器间接访问目标服务器。 对于Windows操作系统而言,在命令提示符中输入`sshd -version`可以验证是否已安装OpenSSH Server组件[^1]。如果没有,则需前往“设置”> “应用” > “可选功能”,找到并添加“OpenSSH Server”。 完成上述操作之后,编辑位于`C:\ProgramData\ssh\`下的`sshd_config`文件来调整必要的参数以适应特定需求,比如更改默认监听端口等[^5]。 #### VSCode Remote-SSH插件配合Windows跳板使用方法 当打算利用Visual Studio Code及其Remote-SSH扩展程序经由Windows系统作为中介连接至另一台Linux/Unix类目的主时,应当按照下面的方式修改本地计算上的`.ssh/config`文档: ```bash Host JumpMachine HostName windows_jumpbox_ip # Windows跳板公网IP地址 Port 22 # 如果不是标准端口则替换此处数值 User administrator # 登录Windows系统的账户名 IdentityFile ~/.ssh/id_rsa # 私钥位置 Host TargetMachine HostName target_server_ip # 目标服务器的实际IP地址 User remote_user # 远程用户的账号名称 ProxyCommand C:\Windows\System32\OpenSSH\ssh.exe -W %h:%p JumpMachine ``` 以上配置意味着每次尝试访问名为TargetMachine的目标设备之前都会先经过JumpMachine(即这里的Windows跳板)建立隧道[^3]。 #### VNC协议辅助图形界面交互 尽管VNC主要用于提供GUI级别的远程桌面支持而非纯粹意义上的跳板制,但在某些特殊场景下也可以借助它实现类似的功能——特别是那些不允许直接SSH接入却开放了RDP/VNC通道的情况。不过需要注意的是这种方法效率较低且安全性较差,因此仅限于临时应急措施而不建议长期采用[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值