Featured image of post 多级ssh访问内网服务器

多级ssh访问内网服务器

使用隧道代理实现多级ssh访问内网服务器

介绍

工作中,生产环境的服务器是无法直接访问的,通常需要4A,访问比较麻烦,可以使用 ssh隧道 简化登录流程。

如下图

流程

ssh登录4A后,无法直接访问 server-2,可以通过 server-1 服务器代理访问。

具体流程

  1. ssh登录4A,新建隧道
  2. 使用4A的隧道作为代理,ssh访问server-1服务器,在server-1上新建隧道
  3. 使用server-1隧道代理访问server-2服务器

使用bitvise配置

  1. 安装bitvise ssh client,下载地址:https://www.bitvise.com/download-area

  2. 新开一个bitvise页面,假设4A系统内网IP为192.168.15.45:10011,添加用户名、密码等登录信息,点击Save profile,将该配置保存。

bitvise-1

  1. 新开一个bitvise页面,填入server-1的IP、端口和登录信息,在 Proxy settings 中,选择第二步保存的4A配置文件,这样就可以使用4A作为代理访问server-1了。(第二步不需要登录了)

bitvise-2

因为的目标服务器server-2还需要使用server-1代理才可以访问,所以还需要打开Services选项卡,勾选SOCKS/HTTP Proxy Forwarding,将本地空闲的端口如1079填入Listen Port

bitvise-3

点击Login,登录到server-1服务器

  1. 打开一个新的bitvise页面,填入目标服务器 server-2 的IP、端口和登录信息,Proxy Setting配置使用server-1服务器开放的1079代理端口。

bitvise-4

为了能够访问 server-2 服务器上的网页服务,比如jenkins,还需要在Services标签页中开放代理,比如使用本地未使用的端口1080作为代理端口

bitvise-5

  1. 本地浏览器可以使用SwitchyOmega插件,将目标服务器上的jenkins等地址配置使用127.0.0.1:1080代理访问。

使用finalshell配置

bitvise仅支持windows系统,如果在linux(如:ubuntu)上访问目标服务器,可以使用finalshell

  1. 建立4A SSH连接,配置隧道类型:本地,监听端口:本地未占用的某个端口,如1078;绑定IP: 127.0.0.1,绑定本地IP;目标地址:使用该隧道访问的地址,此处为server-1服务器地址 10.246.100.5;目标端口:目标地址对应的端口,此处为 10000

finalshell-1 finalshell-2

  1. 建立server-1的SSH连接,主机端口使用4A连接隧道中的绑定ip监听端口,同时还需建立隧道,供访问server-2服务器代理。

finalshell-3 finalshell-4

  1. 建立目标服务器server-2的SSH连接,同理,主机端口填入server-1隧道的绑定ip监听端口,这样就能访问到目标服务器了(需要同时开启4A和server-1的ssh连接),为了访问目标服务器上的网页,还需要在该连接上新建socks5代理隧道

finalshell-5 finalshell-6

  1. 本地浏览器可以使用SwitchyOmega插件,将目标服务器上的jenkins等地址配置使用127.0.0.1:1080代理访问。

使用ProxyJump配置

在linux系统上,也可以使用ProxyJump实现访问server-2服务器,缺点:无法配置socks5代理实现访问目标服务器的网页服务。

如果想在 Windows 上使用 ssh 的 proxyjump 功能,需要使用一个支持该功能的 ssh 客户端。推荐使用 OpenSSH 。
Windows 安装 OpenSSH 参考:
https://learn.microsoft.com/zh-cn/windows-server/administration/openssh/openssh_install_firstuse

  1. $HOME/.ssh/config 文件新增如下内容
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
Host 55.250.10.20
    HostName 55.250.10.20
    User test
    Port 10000
    IdentityFile /opt/develop/ssh/id_rsa
    ProxyJump test@10.246.110.5:10000

Host 10.246.110.5
    HostName 10.246.110.5
    User test
    Port 10000
    IdentityFile /opt/develop/ssh/id_rsa
    ProxyJump abc@192.168.15.45:10011
  1. 在终端输入 ssh 55.250.10.20,然后输入abc用户的密码,即可ssh连接到 server-2 服务器
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
user@00bafcjc-durwemo9n5:~/.ssh$ ssh 55.250.10.20
abc@192.168.15.45's password: 
The authenticity of host '[55.250.10.20]:10000 (<no hostip for proxy command>)' can't be established.
ECDSA key fingerprint is SHA256:TJctlnqugvdS+y7uP9M6DPjoiFHjBBYS9FtwBKBmHFk.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[55.250.10.20]:10000' (ECDSA) to the list of known hosts.
Linux host-55 5.10.0-18-amd64 #1 SMP Debian 5.10.140-1 (2022-09-02) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Tue Jul 25 14:12:14 2023 from 10.63.143.23
secure@host-55:~$
Licensed under CC BY-NC-SA 4.0
Built with Hugo
主题 StackJimmy 设计