功能详解
命令列表
mmh 目前只支持 mac 和 linux 平台,对于 windows 用户在 WSL2 ubuntu 系统下已经测试通过。mmh 在安装时
仅会将原始二进制文件复制一份到安装目录(默认 /usr/local/bin
),然后会采用软链接的方式创建其他快捷命令。
目前 mmh 已包含命令列表以及软链接如下:
mmh cf -> mcf
: 用于切换 context,同时包含一个别名为mcx
的命令mmh server -> mcs
: 列出当前 context 中的服务器mmh go -> mgo
: 登录某一台服务器(ssh)mmh exec -> mec
: 在远端服务器(或一组服务器)上执行命令mmh cp -> mcp
: 在本地与远端服务器(或一组服务器)之间复制文件mmh ping -> mping
: 针对远端服务器执行 ping 检测mmh tun -> mtun
: 在本地与远端服务器之间创建 tcp 隧道,支持反向创建
其他 install 等命令为辅助命令,暂不做详细说明。
无限跳板
当服务器配置中配置了 proxy
字段后,mmh 将通过 proxy
指定的服务器来连接目标服务器。用户可以通过
直接执行 mmh
命令在下拉列表中选择服务器或直接使用 mgo 服务器名称
来连接到目标服务器。
Tips:
mmh
命令的下拉列表支持左右方向键翻页,单页面内支持 1~9
数字键快速跳转;无限跳板默认最多只能穿透
5 个跳板机,可以通过 max_proxy
进行调整:
basic:
...
servers:
...
tags:
...
max_proxy: 10
远程执行
mec
命令可对包含某 tag 的一组服务器进行批量的命令执行:
# 在所有包含 docker tag 的服务器上执行 docker pull nginx:latest
mec docker 'docker pull nginx:latest'
mec
默认是针对 tag 组服务器操作的,如果期望对单一服务器可以使用 -g false
选项:
# 在 prod11 服务器上执行 rm -rf /*
mec prod11 'rm -rf /*' -g false
批量复制
mcp
命令可以实现穿过跳板机将本地文件(夹)直接复制到远端服务器,其行为模式与无限跳板类似;目前其底层
通过标准的 sftp 协议传输保证其稳定性,但是由于其复杂逻辑,目前仅仅测试了以下情况:
# 将本地多文件复制到远端,文件列表混和包括单文件与目录
mcp dir1 dir1 file1 file2 prod11:~
# 将本地多文件批量(-g)复制到远端,文件列表包括单文件与目录
mcp dir1 dir1 file1 file2 docker:~ -g
# 将远端服务器文件/目录复制到本地
mcp prod11:~/file1 ./file1
mcp prod11:~/dir1 ./dir1
需要注意的是复制行为具有文件覆盖特性,相较于其他命而言令复制命令更容易造成不可恢复的故障;所以用户 在使用本命令前应当已经充分了解其带来的风险。
ping 检测
ping 检测依赖于宿主机 ping 命令,当执行 mping prod11
时会进行两种情况的判断:
- 如果
prod11
服务器无需穿越跳板,则直接调用本地 ping 命令执行 - 如果
prod11
服务器需要穿越跳板机,则始终在穿越链路的倒数第二台机器上执行 ping 命令
端口映射
端口映射功能提供了简单易用的 “ssh 打洞” 功能,其整体参数分为 3 部分:
-l
: 左侧,即左边的地址-r
: 右侧,即右边的地址server
: 目标服务器
默认情况下将右侧的端口映射到左侧:
# 通过 prod11 的机器将 baidu.com:80 端口映射到本地
# 本地访问 127.0.0.1:8080 实际的流量传输为:
# 本地 -> 跳板机1 -> ... 跳板机n -> prod11 -> baidu.com:80
mtun -l 127.0.0.1:8080 -r baidu.com:80 prod11
使用 --reverse
选项可以将链路反转:
# 通过本地将 baidu.com:80 发布到 prod11 的 8080 端口
# 远端 prod11 会监听 127.0.0.1:8080(netstat 查看监听进程为 ssh)
# 远端 prod11 访问 127.0.0.1:8080 会将流量穿透回本地然后发出
# prod11 -> 跳板机n -> 本地 -> baidu.com:80
mtun -l baidu.com:80 -r 127.0.0.1:8080 --reverse prod11
首页 | 上一页 | 下一页 |