服务器运维之跳板机

标签: 无 分类: 未分类 创建时间:2023-03-30 06:07:47 更新时间:2025-01-17 10:39:24

前言

跳板机和堡垒机的区别,我这里不再提了。跳板机就是一台服务器,运维人员在维护过程中首先要统一登录到这台服务器,然后再登录到目标设备进行维护和操作。这篇文章我主要介绍使用 MobaXterm 和 fiallshell 两种工具配置跳板机,并介绍了我其中遇到的问题。

1.MobaXterm

主要有三台机器,一台本地机器安装FinalShell(windows机器A),目标机器的ip内网地址: 172.24.148.4 (C机器),跳转机的ip内网ip地址:172.24.148.5(B机器),外网ip地址:xx.xx.xx.1 (B机器)。就是实现从机器A,通过跳转机B,访问目标机C

(1) 新建一个ssh链接,输入目标地址:172.24.148.4,用户名为目标地址的用户名。

(2) 选择网络配置,增加一个 SSH gateway,输入跳转机机的外网ip地址:xx.xx.xx.1,以及用户名

(3) 确定后,双击新建的ssh链接,进行链接,输入跳转机的密码,接受协议

(4) 打开ssh链接,接受并保存相关的认证key之类的东西,输入目标计算机的密码,就可以实现通过跳转机进行链接了。

参考文章:
1.MobaXterm通过跳板机连接内网
2.mobaxterm通过跳板机访问远程服务器(跳板机使用秘钥) MobaXterm 使用 ssh 直接连接远程主机,或者通过跳板机登陆远程服务器可能会出现一段时候不操作就会自动关闭连接。要解决这个过一会就断开连接的问题,我们需要在勾选 Setting 下的 SSH Keepalive 选项。注意任何配置修改后都需要重启下 MobaXterm,否则不会生效。问题是这里也没有提示从那里获取到的密钥。
3.常用的linux 命令&&ssh&&跳板机
4.MobaXterm关于多层跳板机的操作步骤 这里从A(本机)=> B(40) => C(79) =>D(98),这里说了如何配置用户名和密码,但是我尝试之后,还是无法连接。
6.远程服务器连接(密钥验证,跳板机) 这里有配置密钥,进行远程连接,还有在VSCode中进行连接的方法。
7.MobaXterm作为跳板机连接内网机器(使用私钥) (1) 新建session;(2)建立ssh连接;(3)填入跳板机的公网地址,用户名,端口号等;(4)设置主机的私钥。问题是这里没有说明的就是这个私钥的配置方法,所以我使用起来还是非常的费力。
8.MobaXterm建立有跳板机/堡垒机的SSH session(会话) 这个就是一个跳板机跳转到目标服务器上的操作。

2.finallshell

主要有三台机器,一台本地机器安装FinalShell(windows机器A),目标机器的ip内网地址: 172.24.148.4 (C机器),跳转机的ip内网ip地址:172.24.148.5(B机器),外网ip地址:xx.xx.xx.1 (B机器)。就是实现从机器A,通过跳转机B,访问目标机C。

(1) 新建ssh链接,目标地址为 xx.xx.xx.1,端口号和用户名密码为B机器的用户名密码和ssh端口号。

(2) 在上一步的基础上,选择隧道,新建隧道,本地端口填上20024,地址填上127.0.0.1,目标地址填入 172.24.148.4 (C机器) 的地址和端口。

(3) 在新建一个ssh链接,目标地址为 127.0.0.1,端口为上一步填入的端口 20024端口,用户名密码为机器C的用户名密码

(4) 先打开第一步的ssh链接,然后在打开第三步的ssh链接,这样就可以了。

参考文章:
1.finallshell配置跳板机连接主机
2.FinalShell设置跳板机作为代理访问真实机器
3.如何通过跳板机无缝连接需要跳转的服务器? 先搭建 本机 - A 的隧道( SSH / VPN 均可)
4.FinalShell配置隧道
5.ssh 工具教程 假设你的本地机器是 host2, 可以通过 ssh 访问 host3, 但是无法直接访问 host4 上开在 9000 端口的 http 服务, 而 host3 可以访问 host4, 此时就可以利用 ssh 隧道通过 host3 访问 host4 的服务。虽然应用场景非常的正确,但是这个转发的模版配置的感觉不对,因为这个host3并没有定义。
6.finalshell建立服务器内网其他IP端口的隧道
7.通过跳板机连接公司内网办法 主要配置监听端口,可以随意选取合法的端口数字,以及目标地址,目标端口固定为22。这样做之后,每次连接跳板机,本地的6000端口便会等价于内网服务器的22端口。之后便可以通过访问本地6000端口,连接到服务器。

3.问题

接下来我就是记录了我在配置 MobaXterm 和 FinalShell 作为跳板机的时候,遇到的问题,有些问题解决了,有些问题没有解决,可能也不需要解决,但是最后的就是通过

1.MobaXterm网络无法连接

我在另外的一个网络中,内网网络中,进行了同样的操作。我尝试使用MobaXterm作为跳板机进行跳转,但是尝试了很多次,配置了网络链接,配置了用户名密码,最后还是显示:Remote side unexpectedly closed network connection。有些文章是使用的私钥的配置方法,有些使用的是用户名密码的方法,我这里就是无法确定到底该填入那个机器的私钥,以及填入用户名密码的顺序和规则。我怀疑是网络的问题,因为这个目标网络的所有端口都不通。

【尝试】
(1) 在指定用户名密码的时候,配置了多个用户名和密码,无效。
(2) 在多篇文章中,还用了一个Setting的keepalive的选项,无效。
(3) 配置网络代理的时候,使用User SSH key,无效。

2.FinallShell网络无法连接

上面的MobaXterm无法实现跳转机登录的时候,我就尝试使用FinallShell进行跳转机配置,配置了隧道,连接了跳转机,最后还是无法从本机到目标网络。我怀疑也同样是网络的问题。

理论上配置的方法就是:
1.先配置从本机到跳板机的连接,在该连接配置中,增加了一个隧道,指定目标机地址。该隧道创建为本地ip。
2.新建一个连接,从本机,连接到隧道的本地ip地址,
3.这样就实现了,从本机经过隧道,然后连接到了目标主机的ssh连接。

【尝试】
我尝试了网上的很多的方法,最后还是显示:“connection is closed by foreign host”
1.修改防火墙配置,无效。
2.配置隧道,然后通过隧道连接目标主机,无效。
3.我还尝试使用建立隧道之后,使用命令行的方式进行链接,进行ssh -v的debug模式,无效。

尝试无效

3.connection is closed by foreign host

当我配置好了FinalShell隧道之后,进行链接的时候,出现了这个问题。刚开始我编辑了 /etc/ssh/sshd_config 配置文件,配置了下面的两个参数,结果还是无法跳转。

1
2
ClientAliveInterval 60
ClientAliveCountMax 3

因为我在一个网络中尝试成功了,另外的一个网络中没有尝试成功,我后来查看了 /etc/ssh/sshd_config 里面的配置,发现了一些不同之处。在无法使用隧道链接的网络中,我发现了下面几个参数基本上都设置了no,于是我尝试着查询这几个参数。

1
2
3
4
StrictModes yes
AllowTcpForwarding no
AllowAgentForwarding no
PermitTunnel no

【解决方法】
根据我对资料的理解,我需要的就是要把这个 AllowTcpForwarding 进行打开,但是我干脆就直接把全部的都打开好了,然后关闭 FinallShell,之后重新配置隧道,最后终于可以实现通过隧道作为跳板机跳转到目标机上了。

1
2
3
4
StrictModes no
AllowTcpForwarding yes
AllowAgentForwarding yes
PermitTunnel yes

4.kex_exchange_identification: read: Connection reset

我建立了隧道之后,在命令行中使用ssh命令链接: ssh root@127.0.0.1 -p 6000,结果出现了这个问题。

【尝试】
我尝试更新了指纹,还是不行

1
2
## XXX.XXX.XXX.XXX 为要登陆主机的IP地址
ssh-keygen -R XXX.XXX.XXX.XXX

5.Authorized users only.All activities may be monitored and reported

这个应该是安装了某一个监控软件弹出的内容。

小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。