堡垒机跳转MobaXterm问题解决
通过堡垒机跳转—使用MobaXterm终端显示sshpass not found问题
问题描述
登录堡垒机后,选择对应机器跳转,使用Xshell没有问题,可以成功跳转;但使用MobaxXterm跳转显示sshpass not found
问题分析
- MobaXterm本来是支持Linux的,可能在Windows上会有其他配置才能正确使用这些(但平时当终端使用没有影响)
- 没有安装sshpass
- 堡垒机跳转有一些特殊验证处理
问题解决
查看Windows是否需要其他配置
尝试在LInux虚拟机上使用堡垒机跳转,但同样出现该问题,初步判定应该就是没有安装sshpass。
尝试安装sshpass
根据终端提示使用apt install sshpass安装,虽然提示✔,但理论上Windows在没安装其他工具时应该是不能使用apt的,尝试跳转,依然显示not found,且使用sshpass -V,查看不到版本信息。
通过查询资料,发现基本上没有该问题的解决方案,于是尝试gpt,分析得知,因为sshpass也是支持Linux的工具(但网上有个32位的版本,github上),Windows上并不直接支持,Windows上ssh工具有其他的使用,但MobaXterm明确是要使用sshpass,故应该是尝试如何在Windows上安装sshpass工具并使用。
于是找到使用Cygwin可以实现
- 下载Cygwin
-
前往 Cygwin 官方网站。
-
下载
setup-x86_64.exe
(64 位系统)。
- 安装Cygwin
正常选择安装路径,安装包下载源进行安装。
安装的包要包括:
- gcc-core(C 编译器)
- make(构建工具)
- wget(用于下载工具)
- git(可选,下载源码时需要)
- automake
- autoconf
- m4
- libtool
-
安装完成后,尝试运行Cygwin Terminal(我当时是显示找不到mintty.exe,但是确实存在)
最终是重新安装了一些包(不确定有没有用),然后**通过管理员模式运行mintty.exe(应该直接用这个就行)**解决。
-
下载sshpass源码
通过wget(速度慢)或者冲GitHub上拉(我当时使用的方式{可能需要挂梯子})
wget http://downloads.sourceforge.net/project/sshpass/sshpass/1.09/sshpass-1.09.tar.gz
git clone https://github.com/kevinburke/sshpass.git cd sshpass
使用wget的话需要解压源码包:
tar -xvzf sshpass-1.09.tar.gz cd sshpass-1.09
若没有其余错误,可以跳到第6步。
-
若有的包是后续安装的,记得要重新生成构建文件确保兼容:
aclocal
autoconf
automake --add-missing
这里可能会出现automake --add-missing Makefile.am: error: required file './README' not found错误,使用
touch README
即可解决。然后重新执行上述命令。
-
进行配置,编译,安装
./configure make make install
这里执行成功后,可以使用“sshpass -V查看是否有版本信息(在Cygwin Terminal里面)”,有了才进行下一步。
-
添加环境变量
Win+s搜索“环境变量”,点击进入系统属性界面。
在系统变量里面找到Path,选择点击“编辑”,在编辑窗口点击“新建”,然后添加Cygwin的bin目录路径
C:\cygwin64\bin
但实际上可能不是这个路径。
可以手动看看C:\cygwin64\bin\sshpass.exe存在不?(我当时是没有)
此时可以检查`/usr/local/bin目录中是否存在sshpass(直接通过文件夹看),或者在Cygwin Terminal中运行:which sshpass查看,若存在,则就是证明sshpass安装在该目录下。则添加环境变量为该路径才对:
C:\cygwin64\usr\local\bin
-
添加后验证安装
Cygwin Terminal和cmd中分别运行“sshpass -V”看看是否有版本信息。
通过上述操作就已经可以在cmd中看到sshpass版本信息了,代表已经可以在Windows上使用sshpass。
但MobaXterm使用的是它自己的终端环境,会与cmd的环境变量独立(SOS我也是到这里才知道),故MobaXterm无法直接访问Cygwin中的sshpass。但可以解决。
在MobaXterm中使用:
ln -s /cygdrive/c/cygwin64/usr/local/bin/sshpass /usr/bin/sshpass
然后验证“sshpass -V”应该就可以了。
问题解决!!!可以跳转了,但会有/etc/ssh_config line 1: Missing argument. /etc/ssh_config: terminating, 1 bad configuration options的错误提示。大概意思就素:/etc/ssh_config配置文件第一行有语法错误或缺少参数。直接vim /etc/ssh_config进去编辑,用以下内容覆盖存在内容。
# This is the ssh client system-wide configuration file. See
# ssh_config(5) for more information. This file provides defaults for
# users, and the values can be changed in per-user configuration files
# or on the command line.
# Site-wide defaults for various options
Host *
ForwardAgent no
ForwardX11 no
ForwardX11Trusted yes
PasswordAuthentication yes
HostbasedAuthentication no
GSSAPIAuthentication yes
GSSAPIDelegateCredentials no
# GSSAPIKeyExchange no
# GSSAPITrustDns no
BatchMode no
CheckHostIP yes
AddressFamily any
ConnectTimeout 0
StrictHostKeyChecking ask
IdentityFile ~/.ssh/id_rsa
IdentityFile ~/.ssh/id_dsa
Port 22
Protocol 2
Ciphers aes128-ctr,aes192-ctr,aes256-ctr
Tunnel no
TunnelDevice any:any
PermitLocalCommand no
VisualHostKey no
GSSAPIKeyExchange no
GSSAPITrustDns no
上述两项注释掉,不然报错。
重新尝试,成功!!!