堡垒机跳转MobaXterm问题解决

发布于 5 个月前

通过堡垒机跳转—使用MobaXterm终端显示sshpass not found问题

问题描述

登录堡垒机后,选择对应机器跳转,使用Xshell没有问题,可以成功跳转;但使用MobaxXterm跳转显示sshpass not found

问题分析

  1. MobaXterm本来是支持Linux的,可能在Windows上会有其他配置才能正确使用这些(但平时当终端使用没有影响)
  2. 没有安装sshpass
  3. 堡垒机跳转有一些特殊验证处理

问题解决

查看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可以实现

  1. 下载Cygwin
  1. 安装Cygwin

​ 正常选择安装路径,安装包下载源进行安装。

​ 安装的包要包括:

  • gcc-core(C 编译器)
  • make(构建工具)
  • wget(用于下载工具)
  • git(可选,下载源码时需要)
  • automake
  • autoconf
  • m4
  • libtool
  1. 安装完成后,尝试运行Cygwin Terminal(我当时是显示找不到mintty.exe,但是确实存在)

    最终是重新安装了一些包(不确定有没有用),然后**通过管理员模式运行mintty.exe(应该直接用这个就行)**解决。

  2. 下载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步。

  3. 若有的包是后续安装的,记得要重新生成构建文件确保兼容:

aclocal
autoconf
automake --add-missing

这里可能会出现automake --add-missing Makefile.am: error: required file './README' not found错误,使用

touch README

即可解决。然后重新执行上述命令。

  1. 进行配置,编译,安装

    ./configure
    make
    make install
    

    这里执行成功后,可以使用“sshpass -V查看是否有版本信息(在Cygwin Terminal里面)”,有了才进行下一步。

  2. 添加环境变量

    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
  1. 添加后验证安装

    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

上述两项注释掉,不然报错。

重新尝试,成功!!!

Terminal
MobaXterm
$ cd ..