什么是跳板机?XShell如何通过跳板机连接内网机器?

时间:2024-10-22 08:27:13

一、了解跳板机

 跳板机Jump Server),也称堡垒机,是一类可作为跳板批量操作远程设备的网络设备,是系统管理员或运维人员常用的操作平台之一。

  跳板机是网络中容易受到侵害的主机,所以跳板机也必须是自身保护完善的主机。通常至少配备两块网卡设备,分别具备不同的网络连接。一个连接外网,用以对目标服务器的远程登录及维护;另一个则连接内网,便于内部网络的管理、控制和保护,通过网关服务提供从私网到公网,或从公网到私网的特殊协议路由服务。

二、简单的跳板机实现

1.要求

  • 跳板机上为每个开发人员创建一个账号,并且只能在指定的目录里管理自己的文件。
  • 线上生产服务器,禁止使用root用户远程登录。
  • 线上生产服务器sshd服务不允许使用默认端口,防止黑客通过端口扫描。
  • 线上生产服务器上开发人员使用的账号code用户的密码使用工具随机生成。

2.分析

  • 在跳板机上为开发人员创建账号
  • 公共目录需要有高级权限
  • 禁止root用户远程登录系统
  • 更改ssh协议的端口号
  • 内网环境下安装软件

3.拓扑图

4.环境的介绍

  • PC为本机,已禁用VMware网卡1,本机IP为192.168.39.39/2

  • Jump-server为centos6虚拟机,安装两块网卡,ip分别为192.168.189.132/24; 1192.168.189.132/24,跳板机能够ping通PC和Service

  • service为Centos6虚拟机,安装一块网卡,IP为192.168.189.128

  • 目前PC端无法连接192.168.189.0/24网段的所有IP

  • 两个Centos均安装openssh-client和openssh-service

5.实验具体步骤

(1)创建用户并增加相应权限

[root@jiangfeng1 ~]# groupadd coding
[root@jiangfeng1 ~]# useradd -G coding code1
[root@jiangfeng1 ~]# useradd -G coding code2
[root@jiangfeng1 ~]# echo 123456 | passwd --stdin code1

#更改用户 code1 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@jiangfeng1 ~]# echo 123456 | passwd --stdin code2

#更改用户 code2 的密码 。
passwd: 所有的身份验证令牌已经成功更新。
[root@jiangfeng1 ~]# mkdir -p /code/data
[root@jiangfeng1 ~]# chown :coding /code/data/
[root@jiangfeng1 ~]# chmod 1770 /code/data/
[root@jiangfeng1 ~]# ll -d /code/data/
drwxrwx--T 2 root coding 4096 7月  20 03:33 /code/data/

(2)禁止root远程登录和更改默认端口号

在Service端更改ssh服务的配置文件, vi /etc/ssh/sshd-config。

 注:尽量不要更改配置文件注释的信息,如若需要更改,先复制一行在进行更改。

(3)用户密码随机

因为我的service端为仅主机模式,所以无法连接互联网,所以我需要在Jump-service缓存下安装包,在通过scp发送到service端。

[root@jiangfeng1 network-scripts]# yum install pwgen
…………
已安装:
  pwgen.x86_64 0:2.08-1.el6                                                                                                       

完毕!
[root@jiangfeng1 6]# scp -P 10001 /var/cache/yum/x86_64/6/epel/packages/pwgen-2.08-1.el6.x86_64.rpm code@192.168.189.128:/tmp
The authenticity of host '[192.168.189.128]:10001 ([192.168.189.128]:10001)' can't be established.
RSA key fingerprint is df:28:9d:09:a3:bf:52:a6:e5:ce:f2:a4:04:0d:b8:cc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.189.128]:10001' (RSA) to the list of known hosts.
code@192.168.189.128's password: 
pwgen-2.08-1.el6.x86_64.rpm                                                                     100%   25KB  24.5KB/s   00:
[root@jiangfeng1 6]# pwgen -cnsB1 15 1
ajxmHfcUaT4Azht
[root@jiangfeng1 6]# echo ajxmHfcUaT4Azht | passwd --stdin code

(4)测试

1.从PC端直接连接service

无法连接service。

2.从PC端通过Jump-service远程service

验证成功!!!

三、利用XShell隧道通过跳板机连接内网机器

这里先重新假设一下服务器情况,因为在企业里面内网环境和线上环境肯定不在一个网段的。这里假设跳板机地址:220.101.5.5,内网服务器两台:192.168.100.5 192.168.100.6。SSH开放端口都假设为22,通常就是22。

1.首先建立跳板机的连接,并配置隧道。打开XShell点击文件菜单再点击新建弹出新建会话属性窗口,名称就取为跳板机,端口是22,主机填写前面假设的ip地址。如下图所示:

2.点击用户身份验证,填写登录跳板机的SSH用户名和密码如下图所示:

3.为防止跳板机连接过久自动断开,所以这里添加登录脚本直接发送top命令。点击登录脚本,勾选上执行以下等待并发送规则,点击添加弹出等待发送规则添加窗口,在发送框填写top。具体配置看图

4.接下来继续配置连接内网服务器的隧道,点击隧道再点击添加按钮进入隧道添加页面,源主机为本机localhost,侦听端口可以在有效范围内随便填写,这里为了区分连接内网哪台服务器,所以用内网服务器ip最后一位加22即522作为侦听端口。目标主机就是我们要通过跳板机访问的内网主机,端口是22。同样的操作再配置一个连接192.168.100.6的隧道,端口不能与522冲突,按刚才的规则可以用622端口。具体配置如下图:

5.到此跳板机的配置已经完成了,下面来建立通过跳板机登录内网服务器的连接会话,首先还是进入新建会话属性窗口,注意一下这次的配置,主机为localhost,侦听端口为刚才的522,即这个配置连接之后是访问内网的192.168.100.5服务器,再配置一下用户身份验证,填写内网服务器的账号和密码,可以再添加一下登录脚本,直接发送进入日志服务器的命令,比如:cd /tmp/logs/xxx这样每次一连接上就进入日志目录。这样一台内网服务器的连接配置就完成了,同样的操作再配置192.168.100.6的连接,端口为622。具体如下图:

6.到此跳板机、隧道及内网的两台服务器连接都配置完成了。下面就该测试连接了,先打开跳板机的连接,再打开两台内网服务器的连接,若正常连接上就配置正确了。特别注意:跳板机一定要先打开,因为内网服务器的连接都是基于跳板机的侦听端口。如下图所示