简述
分享下自己的基于 tmux 和 ssh 的跳转机管理工具loginfo, 项目地址.
优点:
- 单纯bash实现, 基于自带ssh公钥登陆去跳转,较为安全
- 使用跳转机tmux进行ssh连接其他主机,减少由于阻断导致ssh的断联
- 使用tmux可以对连接的主机进行批量操作
安装方法:
curl -sSL https://raw.githubusercontent.com/ziwiwiz/loginfo/main/install_loginfo.sh | bash -s -- install
安装后自动放置在 /opt/loginfo/ 目录下。
配置文件:
在/opt/loginfo/host_conf, 参考示例:
# [group_name]
# id|ip|user|password|port|name
# id: 服务器编号, 组内唯一
# ip: 服务器ip地址
# user: ssh登陆用户名
# password: ssh登陆密码, 目前不支持自动密码登陆, 需要提前配置好公钥登陆
# port: ssh端口
# name: 服务器名称, 用于显示
[oracle]
111|seoul1.example.com|root|password|27026|seoul-oracle-1
112|seoul2.example.com|root|123456|22|seoul-oracle-2
[us]
121|us1.example.com|root||26086|us1
122|us2.example.com|root||1010|us2
# [custom_group_name]{id1,id2,...}
# custom_group_name: 自定义组名, 组内唯一
# id1,id2,...: 服务器编号
[group1]{111,121}
使用方式
定义别名zz 和 zzt(也可以自己自定义):
alias zz='/opt/loginfo/autologin.sh --no-tmux'
alias zzt='/opt/loginfo/autologin.sh'
zz - 直接 ssh 连接
输入服务器编号,直接 ssh 连接对应服务器

zzt - tmux + ssh 综合操作
输入服务器编号或者相关命令

输入all连接所有服务器

功能:
- 输入服务器编号,使用 tmux 打开单个 SSH session
- 输入服务器组名,批量打开多个 SSH session
- 输入自定义服务器分组组名, 批量打开多个 SSH session
- 输入
all,一键打开所有服务器 ls/ll,查看当前 tmux sessionkill all,关闭所有 sessionkill <group_name>,关闭指定组 sessionexit/q,退出 tmuxhelp,查看帮助
tmux 基础使用
这块都是tmux的功能了,可以自己搜索研究
| 按键 | 功能 |
|---|---|
| Ctrl+b, d | 离开 session, 保持连接 |
| Ctrl+b, s | 查看 session 列表 |
| Ctrl+b, w | 查看窗口列表 |
批量发送指令, 在 .tmux.conf 里添加:
# 命令输入
bind E command-prompt -p "Command:" \
"run \"tmux list-panes -a -F '##{session_name}:##{window_index}.##{pane_index}' \
| xargs -I PANE tmux send-keys -t PANE '%1' Enter\""
配置后:
Ctrl+b, E,输入命令,就可以发送到所有已打开的服务器(比如批量跑测试脚本).
加了点配色修改


配置多个服务器后效果如下:

欢迎来提issue
bd