Skip to content
/ sshx Public

Multiple ssh server connect and exec commands tool, powerful batch upload and batch download , file name wildcard is supported

Notifications You must be signed in to change notification settings

snail007/sshx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

11 Commits
 
 
 
 
 
 

Repository files navigation

sshx

批量ssh操作工具。

下载地址

特点

  • 多平台支持,Windows、macOS、Linux。
  • 灵活的配置,可以单独定义每个机器的连接信息,也能批量定义,支持用户名密码,支持密钥,支持密钥密码。
  • 强大的命令行提示功能,常用的命令只需要输入开始几个字母就会提示出常用的命令组合。
  • 命令历史记录功能。
  • 批量上传,实时显示进度和速度,另外即使你同时往1000个机器上上传一个1g的文件,sshx占用内存也保持在30M左右,不会因为文件大小和机器数量占用过多内存。
  • 批量下载,实时显示进度和速度,下载会自动建立好每个组和节点名称的文件夹保存文件,另外即使你同时下载1000个机器上的一个1g的文件,sshx占用内存也保持在30M左右,不会因为文件大小和机器数量占用过多内存。
  • 强大的代理功能,如果你的有些服务器不能直连,可以设置通过代理当跳板去连接,独家代理类型同时支持http(s)、socks5、shadowsocks。
  • 批量操作的时候,还能切换本地目录,方便上传下载文件。
  • 跳板机支持,作为Linux用户登录后执行的shell程序轻松实现跳板机功能。

批量上传文件

批量下载文件

批量执行命令

交互式界面

1、配置文件查找顺序

sshx会按着以下顺搜索配置文件,找到就会停止往下搜索.

1.命令行参数 -c 指定的文件, -c 默认是空.

2.环境变量 SSHX_NODES 指定的文件.

3.当前工作目录下面的 nodes.ini 文件.

4.当前用户主目录($HOME)下面的 .sshx/nodes.ini 文件.

5.当前用户主目录($HOME)下面的 nodes.ini 文件.

6.文件 /etc/sshx/$USER/nodes.ini, $USER 是当前用户登录名称

7.文件 /etc/sshx/nodes.ini

免费版只支持:1、3、4

2、配置文件说明

程序下载包里面带了一个配置示例文件:nodes.sample.ini,具体使用的时候,需要你把它重命名为nodes.ini,然后放在上面的7个搜索路径中的任意一个就可以了。

下面对配置内容就行说明:

示例配置文件配置内容默认都被注释了,如果要启用需要取消前面对分号 ;

[setting]
;for example: 
;socks5://127.0.0.1:1080 or http://127.0.0.1:8080
;socks5s://127.0.0.1:1080 or https://127.0.0.1:8080
;ss://aes-192-cfb:password@127.0.0.1:1080
;proxy=socks5://127.0.0.1:1080
;是否允许执行 LS PWD CD,默认false
exec_local_cmd=true

[sample]
; username=""
; password=""
; keyfile=""
; keysalt=""
; timeout=""
; node1 is nodename, nodename can not contains : #
; node1="ssh://root:pass@host:port/?keyfile=xxxx.key&keysalt=yyyy&timeout=5000"
; node2="ssh://root@host:port"
; node3="ssh://host:port"

setting下面是一些全局配置:

proxy 是sshx连接ssh服务器对时候,使用的代理,代理类型支持:http(s),socks5,shadowsocks,代理写法格式上面有示例。

exec_local_cmd sshx可以CD切换工作目录,可以PWD查看当前工作目录,可以LS列出目录内容,这些机器安全性有关,默认是关闭false,如果要使用这三个命令,需要设置为true

sshx管理服务器以组为单位,配置文件里面除了setting项,其它项都是组名称,比如示例文件里面对[sample]就定义了一个服务器组,

组下面可以通过定义key=value,如果value是ssh://开头,就认为这个key是一个节点对名称,比如:node3="ssh://host:port"就是定义了一个ssh服务器节点。

节点对ssh连接完整格式如下:

ssh://root:pass@host:port/?keyfile=xxxx.key&keysalt=yyyy&timeout=5000

可以看到,里面可以设置ssh用户名root,ssh密码pass,ssh服务器地址host和端口port,还能设置ssh密钥keyfile,还能设置密钥保护密码keysalt,还可以设置连接超时时间timeout,不是每个信息都必须的。

有时候很多节点他们对用户名和其它信息有可能都一样,那么就不用每个节点对连接信息里面都写一遍信息。

只需要在组下面定义即可:

username="" ssh用户名
password="" ssh密码
keyfile=""  ssh密钥路径,必须是绝对路径
keysalt=""  密钥保护密码
timeout=""  接超时时间,单位毫秒

节点名称不能包含符号:# 组内节点名称不能重复,配置文件中:用户名+主机地址(IP或域名)+端口 不能重复

如果节点连接信息里面没有对应配置,而且组内全局配置有对应配置且非空,那么最终会使用组内的全局配置。

[test]
username="root"
password="pass01"
timeout="5000"
;用户名密码连接,并独立设置超时为8000
node1="ssh://root:pass@host:port/?timeout=8000"
;使用用户密钥连接(密钥有密码)连接,超时使用组内全局5000
node2="ssh://root@host:port/?keyfile=xxxx.key&keysalt=yyyy"
;使用用户密钥,超时使用组内全局5000
node3="ssh://root@host:port/?keyfile=xxxx.key"
;使用组内定义的全局用户名root,密码pass01连接服务器,超时使用组内全局5000
node4="ssh://host:port"

3、选择节点组或节点操作说明

1、执行sshx后,sshx会加载搜索路径里面的nodes.ini配置文件。

2、然后会列出所有的组,每个组前面都一个数字组号,下面会提示你输入组号进行连接。

3、输入的时候,不仅可以输入组号,还能输入组内的具体节点,比如 1.1 就是组1内的第一个节点,还可以同时组和节点

比如:1 2.1 3 !3.2 意思是连接组1,组2内的节点2.1,组3,并排除组3内的节点3.1

4、如果要看组内节点情况可以使用 /1 查看组1内的节点列表。

5、输入的时候,我们还可以直接输入节点名称的开头部分字母,sshx会列出匹配的节点列表,这个时候你用按TAB键就可以列出的选择节点或组。

4、批量执行非交互式命令

当我们输入完毕了要连接的节点组或节点之后,按回车,就进入连接阶段,如果连接成功,就会有一个命令输入提示行,这个时候就可以在这些连接的节点上批量执行命令了。

1.默认命令行帮助识别分隔符是:` ,选中的帮助命令会覆盖当前输入.

2.如果需要在输入一部分命令后,选中的帮助命令追加到当前命令后面,可以通过执行:`` ,设置命令行帮助识别分隔符为空格.

3.可以执行的本地命令

LS [local_path] 列出本地指定路径内容
CD <local_path> 切换sshx工作目录到指定本地路径
PWD 显示当前sshx本地工作目录路径

4.批量上传 upload

5.批量下载 download

5、Linux & MacOS 交互式命令

上面的批量执行命令只能执行非交互式命令,虽然可以满足大部分情况,但是有时候需要进入交互式界面,执行交互式命令。

交互式只能选择一个节点不支持组,意思就是只能连接一个节点,然后在节点后面加上 空格 .

比如:1.1 . 就可以进入交互式界面,和原生ssh操作界面一样,这个模式下,sshx的本地命令均不能使用。

6、Windows交互式命令

Windows的cmd命令行对终端支持很差,很多命令都会显示异常,所以Windows下面对交互式界面采用web方式,此功能需要系统已经安装了Chrome或者Firefox浏览器。

web交互式只能选择一个节点不支持组,意思就是只能连接一个节点,然后在节点后面加上 空格 ..,就是进入web交互式界面。

比如:1.1 .. 就可以进入web交互式界面,和原生ssh操作界面一样,这个模式下,sshx的本地命令均不能使用。

商业版

这不是一款完全免费软件,提供免费版和商业版,功能对比如下。

            免费版       商业版   
基础功能
批量执行命令
批量上传文件 ×
批量下载文件 ×
使用代理 ×
免费更新至更多功能的商业版 ×
配置文件多路径搜索 ×
当作跳板机 ×
WEB交互式
本地目录切换CD、PWD、LS ×

商业版授权方式为

  1. 程序和机器绑定,单个机器方式授权,针对机器码收费。

商业版使用

  1. 去平台授权平台 https://gpm.host900.com/ 注册一个用户。

  2. 如果使用机器码授权方式,首次启动,会在当前目录下面生成id.txt文件,里面是当前机器的机器码,如果是sdk,调用MacCode方法即可获得当前机器的机器码,然后购买机器码名额,最后把机器码添加到授权平台我的机器码中即可完成授权。

提醒

商业版只会在启动的时候联网检查一次授权,后期不会再联网检查,只会在机器码到期的时候再检查一次,如果48小时内无法成功检查授权程序会退出。 如果系统发现用户恶意使用或传播自己的机器码,官方有权终止其使用,并不负任何责任。

购买商业版

购买商业版,请加QQ:672308444

商业版用户附加权益

1、官方免费提供专业的技术指导。

2、商业版用户可以提一些商业功能意见,官方会针对意见的合理性等情况进行评估,如果意见被采纳,在未来新版本中会加入。

3、商业版用户可以免费更新至功能更多的商业版新版。

不能访问授权的解决办法

商业版必须可以在线访问授权才能使用,如果您在使用sshx过程中出现服务器可以访问互联网,但是sshx提示访问授权信息失败。可以按着以下方法解决。

1.如果您的sshx机器可以访问互联网,由于机器DNS可能不能正确解析更新域名,可以指定DNS启动sshx。

Linux启动命令示例:

LIC_DNS=8.8.4.4:53 ./sshx

Windows启动命令示例

set LIC_DNS=8.8.4.4:53
./sshx.exe

2.如果sshx是在内网环境不能直接访问互联网,你可以在能够访问互联网的机器上启动一个http代理,然后给sshx使用。

比如: sshx在192.168.1.10,不能直接访问互联网。

在192.168.1.200机器可以访问互联网,那么可以在192.168.1.200机器启动:

./proxy http -p :8080 -q 8.8.4.4:53

在192.168.1.10上面启动命令:

LIC_PROXY=http://192.168.1.200:8080 ./sshx

3.如果内网有现成的http代理,那么2步骤里面不需要自己启动一个代理,LIC_PROXY直接使用现成的http代理即可。

About

Multiple ssh server connect and exec commands tool, powerful batch upload and batch download , file name wildcard is supported

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published