Hugo博客公告弹窗

简易跳板机工具lssh,附安装脚本

使用场景:一对密钥维护多台机子,备份好配置,被控小鸡密钥丢了也没事

项目

Github: https://github.com/blacknon/lssh/

wiki: https://github.com/blacknon/lssh/wiki/Config

脚本

在debian11测试通过

curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/ilssh.sh && chmod +x ilssh.sh && ./ilssh.sh

配置

默认密钥登录

参考模板: https://github.com/woniu336/open_shell/blob/main/.lssh.conf

添加主机

[common] 代表通用配置,主机配置可以覆盖通用配置

port = "22"          #假设所有主机默认ssh端口为22,可以是其他端口       
user = "root"        #默认用户root
key  = "~/.ssh/id_rsa"   #默认密钥路径
pre_cmd = "echo 'SSH连接中。。。'"  #连接前执行的命令,可以是其他命令
post_cmd = "find /root/log/lssh -mindepth 2 -maxdepth 2 -type d -name 'logdir' -exec sh -c 'cd \"{}\" && ls -t | tail -n +2 | xargs rm -f' \\;"  #退出后的命令

[server.主机昵称] 主机配置,主机昵称可以随意,不能是中文和重复,但前面必须加 server.

例如:[server.node3] 、[server.node2] 按照以下写法逐个添加

[server.node1]
addr = "192.168.1.8"  # ip地址
port = "33"           #ssh端口号33,如果与通用配置一样,则可以为空         
user = "root"         #如果与通用配置一样,可以留空  
pass = ""             #主机登录密码,如果使用密钥连接,可以为空
note = "node1主机"    #主机备注,方便查找

[includes] 配置,表示可以指定其他文件作为主机配置,写法与主机配置一样,一般不用

#[includes]
path = [
     "~/.lssh.conf.include1"
    ,"~/.lssh.conf.include2"
]

[log] 主机操作日志,所有在终端敲打的命令都会记录保存在 ~/log/lssh/日期_主机昵称/logdir目录

[log]
enable = true                       
timestamp = true                    
dirpath = "~/log/lssh/<Date>_<Hostname>/logdir"

这条命令表示只保留最新一个日志,在退出ssh连接时执行

post_cmd = "find /root/log/lssh -mindepth 2 -maxdepth 2 -type d -name 'logdir' -exec sh -c 'cd \"{}\" && ls -t | tail -n +2 | xargs rm -f' \\;"

使用方法

登录主机

lssh    #使用键盘上下方向键选择,也可以用鼠标,最上方可以输入关键字查找,回车登录

发送命令

lssh hostname  #可以按ALT+A全选,也可单独选一台主机,或者输入关键字查找

上面的命令只是例子,写法:lssh 后面加命令即可

并行运行命令

lssh -p uname -a

上面的命令只是例子,写法:lssh 后面加 -p

交互命令

lssh -s

scp命令

写法: 远程路径前面加 r: 不能单独使用 lscp 命令

lscp /path/to/123.txt r:/path/to/remote

例如:lcsp 123/uuu.txt r:./123 复制/root/123/uuu.txt到远程主机(选择后)

本地复制到远程

# lscp local => remote(multiple)
lscp /path/to/local... r:/path/to/remote

远程复制到本地(这里有个bug,会进入选择界面,直接回车)

# lscp remote(multiple) => local
lscp r:/path/to/remote... /path/to/local

远程到远程(先选择第一个主机,再选择第二个主机)

# lscp remote => remote(multiple)
lscp r:/path/to/remote... r:/path/to/local

lsftp命令 推荐好用

lsftp  #可选择多台主机

本地到远程

put /path/to/local ./

例如 put 123/xx.md ./123 复制xx.md文件到远程主机/root/123目录下

远程到本地

get /path/to/remote ./

更多玩法自行挖掘

CC BY-NC-SA 4.0 转载请注明
最后更新于 2025-02-19 08:29
clarity统计