GBase8a MPP监控工具 ssh 报错问题探究

最近在使用 南大通用GBase8aMPP 数据库集群的附带的监控工具 GMonitor ,不得不说这个工具很好用。然而我在使用该工具操作集群相关监控时,发现会报 ssh 连接的错误,故而深入探究下。
究其原因,因为集群所在服务器的 ssh 服务即 openSSH 版本不断升级,导致一些就旧有连接或加密协议不再被默认支持。故而报错。以下为探究过程粗略记录。
Java 操作 ssh 原创连接 shell 执行命令探究

导言

SSH 是啥?

SSH(Secure Shell 的缩写)是一种网络协议,用于加密两台计算机之间的通信,并且支持各种身份验证机制。在实际应用中,它 主要用于保证远程登录和远程通信的安全,任何网络服务都可以用这个协议来加密。

问题描述与解决

服务器的 ssh 服务比较新,而新版的 ssh 服务中,ssh 服务端配置文件 /etc/ssh/sshd_config 与之前旧版本差距较大。

OpenSSH 服务器在启动时读取配置文件。通常这个文件是/etc/ssh/sshd _ config,但是在启动 sshd 时可以使用-f 命令行选项更改位置。有些组织以不同的端口号运行多个 SSH 服务器,使用此选项为每个服务器指定不同的配置文件。

OpenSSH 中某些配置选项的默认值限制性很强,经常需要更改。通常,这是通过编辑默认配置文件来实现的,只需要修改一些选项。

MAC 码不匹配问题

可以看到 no matching MAC found. xxxx,显然意思是客户端的支持的 mac 码与服务端配置的 mac 码不匹配,此时查看服务端的配置文件 cat /etc/ssh/sshd_config 有一行:它描述了服务端支持的 mac 码算法,这就解释了为什么把这行注释掉就可以成功访问的原因。 当然,不注释这一行,而是在后面继续添加客户端支持的那几种算法的一个或多个,这个问题也是可以解决的。

MACs hmac-sha2-256,hmac-sha2-512

kexalgorithm 密钥交换算法报错

其实由于版本差异,kexalgorithm 密钥交换算法这个选项也是极有可能出现问题的。这时候要与上文 mac 码不匹配解决方案是一样的。在新版本由于安全原因不建议使用的参数可以选择手动添加在配置文件里:

KexAlgorithms ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256,diffie-hellman-group1-sha1

这是一张在 ssh 官网的文档截图:里面是最新版本加密策略四个选项(Ciphers、HostKeyAlgorithms、KexAlgorithms、MACs)的一些推荐与不推荐的配置。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OgQOSENk-1651197947278)(mac 安装虚拟机.assets/image-20220310111728580.png)]

命令参考

# 查看当前 ssh 支持的 MACs 有哪些。可以选择将这些统统加到 sshd_config 配置文件最后的 MACs 里,使用逗号分隔
ssh -Q mac

# 查看当前 ssh 支持的。可操作方法同 MACs
ssh -Q cipher

# 查看 sshd_config 配置文件,一般只需要注意最后几行,也可使用 tail /etc/ssh/sshd_config
cat /etc/ssh/sshd_config

# 查看当前 ssh 服务器操作日志。借此一般都可以发现到底是哪个加密策略有问题,然后对应处理
tail -f /var/log/secure

其他解决方案

除了修改服务端的配置,也可以修改客户端的配置——即在客户端连接代码里添加全面的加密策略算法支持。例如在 ch.ethz.ssh2 的 jar 包,对于 mac 信息识别算法里面明确写了只支持 hmac-sha1-96", "hmac-sha1", "hmac-md5-96", "hmac-md5 四种,所以在新版本的 openssh 报错。**所以除了修改ssh服务端配置文件的方法外,我们也可以试图寻找一种对以上四种加密策略算法支持更好的 jar 包。**有以下几种:

ch.ethz.ssh2

暂略。

jsch

暂略。

sshj

SSHJ 是 hierynomus 在 Github 上开源的 Java SSH 库,项目位于 https://github.com/hierynomus/sshj,目前版本为 v0.32.0。

SSHJ 功能齐全,支持从 known_hosts 文件读取验证公钥,支持公钥、密码和交互式的验证方式,支持命令、子系统和 Shell Channel,支持本地和远程端口转发,支持 SCP 安全拷贝协议,支持从版本 0 到 3 的完全的 SFTP 安全文件传输协议,支持广泛的加密、签名、压缩等的算法实现。

Lisense:Apache License Version 2.0

参考文档

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值