批量ssh操作工具。
- 多平台支持,Windows、macOS、Linux。
- 灵活的配置,可以单独定义每个机器的连接信息,也能批量定义,支持用户名密码,支持密钥,支持密钥密码。
- 强大的命令行提示功能,常用的命令只需要输入开始几个字母就会提示出常用的命令组合。
- 命令历史记录功能。
- 批量上传,实时显示进度和速度,另外即使你同时往1000个机器上上传一个1g的文件,sshx占用内存也保持在30M左右,不会因为文件大小和机器数量占用过多内存。
- 批量下载,实时显示进度和速度,下载会自动建立好每个组和节点名称的文件夹保存文件,另外即使你同时下载1000个机器上的一个1g的文件,sshx占用内存也保持在30M左右,不会因为文件大小和机器数量占用过多内存。
- 强大的代理功能,如果你的有些服务器不能直连,可以设置通过代理当跳板去连接,独家代理类型同时支持http(s)、socks5、shadowsocks。
- 批量操作的时候,还能切换本地目录,方便上传下载文件。
- 跳板机支持,作为Linux用户登录后执行的shell程序轻松实现跳板机功能。
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
程序下载包里面带了一个配置示例文件: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"
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键就可以列出的选择节点或组。
当我们输入完毕了要连接的节点组或节点之后,按回车,就进入连接阶段,如果连接成功,就会有一个命令输入提示行,这个时候就可以在这些连接的节点上批量执行命令了。
1.默认命令行帮助识别分隔符是:` ,选中的帮助命令会覆盖当前输入.
2.如果需要在输入一部分命令后,选中的帮助命令追加到当前命令后面,可以通过执行:`` ,设置命令行帮助识别分隔符为空格.
3.可以执行的本地命令
LS [local_path] 列出本地指定路径内容
CD <local_path> 切换sshx工作目录到指定本地路径
PWD 显示当前sshx本地工作目录路径
4.批量上传 upload
5.批量下载 download
上面的批量执行命令只能执行非交互式命令,虽然可以满足大部分情况,但是有时候需要进入交互式界面,执行交互式命令。
交互式只能选择一个节点不支持组,意思就是只能连接一个节点,然后在节点后面加上 空格 .
比如:1.1 . 就可以进入交互式界面,和原生ssh操作界面一样,这个模式下,sshx的本地命令均不能使用。
Windows的cmd命令行对终端支持很差,很多命令都会显示异常,所以Windows下面对交互式界面采用web方式,此功能需要系统已经安装了Chrome或者Firefox浏览器。
web交互式只能选择一个节点不支持组,意思就是只能连接一个节点,然后在节点后面加上 空格 ..
,就是进入web交互式界面。
比如:1.1 .. 就可以进入web交互式界面,和原生ssh操作界面一样,这个模式下,sshx的本地命令均不能使用。
免费版 | 商业版 | |
---|---|---|
基础功能 |
√ | √ |
批量执行命令 |
√ | √ |
批量上传文件 |
× | √ |
批量下载文件 |
× | √ |
使用代理 |
× | √ |
免费更新至更多功能的商业版 |
× | √ |
配置文件多路径搜索 |
× | √ |
当作跳板机 |
× | √ |
WEB交互式 |
√ | √ |
本地目录切换CD、PWD、LS |
× | √ |
- 程序和机器绑定,单个机器方式授权,针对
机器码
收费。
-
去平台授权平台 https://gpm.host900.com/ 注册一个用户。
-
如果使用
机器码
授权方式,首次启动,会在当前目录下面生成id.txt文件,里面是当前机器的机器码,如果是sdk,调用MacCode方法即可获得当前机器的机器码,然后购买机器码名额,最后把机器码添加到授权平台我的机器码中即可完成授权。
商业版只会在启动的时候联网检查一次授权,后期不会再联网检查,只会在机器码
到期的时候再检查一次,如果48小时内无法成功检查授权程序会退出。
如果系统发现用户恶意使用或传播自己的机器码
,官方有权终止其使用,并不负任何责任。
购买商业版,请加QQ:672308444
1、官方免费提供专业的技术指导。
2、商业版用户可以提一些商业功能意见,官方会针对意见的合理性等情况进行评估,如果意见被采纳,在未来新版本中会加入。
3、商业版用户可以免费更新至功能更多的商业版新版。
商业版必须可以在线访问授权才能使用,如果您在使用sshx过程中出现服务器可以访问互联网,但是sshx提示访问授权信息失败。可以按着以下方法解决。
Linux启动命令示例:
LIC_DNS=8.8.4.4:53 ./sshx
Windows启动命令示例
set LIC_DNS=8.8.4.4:53
./sshx.exe
比如: 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