加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

English | 中文

🦅 SSX 是一个有记忆的 SSH 客户端。

它会自动记住通过它登录的服务器,因此,当您再次登录时,无需再次输入密码。

在线文档

👉 https://ssx.vimiix.com/

使用方式

安装

ssx 是通过 golang 开发的一个独立的二进制文件,安装方式就是从 release 页面下载对应平台的软件包,解压后把 ssx 二进制放到系统的任意目录下,这里我习惯放到 /usr/local/bin 目录下,如果你选择其他目录下,需要确保存放的目录添加到 $PATH 环境变量中,这样后续使用我们就不用再添加路径前缀,直接通过 ssx 命令就可以运行了。

如果你想从源代码安装,你可以在项目根目录下运行命令:

make ssx

然后你可以在 dist 目录下得到 ssx 的二进制文件。

添加新条目(登录一次即代表新增)

ssx [USER@]HOST[:PORT] [-k IDENTITY_FILE] [-p PORT]

如果给定的地址与一个存在的条目匹配,ssx 将直接登录。

在这个命令中,USER 是可以省略的,如果省略则是系统当前用户名;PORT 是可以省略的,默认是 22-k IDENTITY_FILE 代表的是使用私钥登录,通过 -k 来指定私钥的路径,也是可以省略的,默认是 ~/.ssh/id_rsa,当然了,前提是这个文件存在。所以精简后的登录命令就是:ssx <ip>

当首次登录,不存在可用私钥时,会通过交互方式来让用户输入密码,一旦登录成功,这个密码就会被 ssx 保存到本地的数据文件中 (默认为 ~/.ssx/db, 可通过环境变量 SSX_DB_PATH 进行自定义),下次登录时,仍然执行 ssx <ip> 即可自动登录。

注意,登录过的服务器,再次登录时,我嫌输入全部 IP 比较繁琐,所以 ssx 支持输入 IP 中的部分字符,自动搜索匹配进行登录。

列出存在的条目

ssx list
# output example
# Entries (stored in ssx)
#  ID |       Address        |          Tags
#-----+----------------------+--------------------------
#  1  | root@172.23.1.84:22  | centos

ssx 默认不加载 ~/ssh/config 文件,除非设置了环境变量 SSX_IMPORT_SSH_CONFIG

ssx 不会将用户的 ssh 配置文件中的条目存储到自己的数据库中,因此您不会在 list 命令的输出中看到 “ID” 字段。

export SSX_IMPORT_SSH_CONFIG=true
ssx list
# output example
# Entries (stored in ssx)
#  ID |       Address        |          Tags
#-----+----------------------+--------------------------
#  1  | root@172.23.1.84:22  | centos
#
# Entries (found in ssh config)
#               Address              |           Tags
# -----------------------------------+----------------------------
#   git@ssh.github.com:22            | github.com

为服务器打标签

ssx 会给每个存储的服务器分配一个唯一的 ID,我们在打标签时就需要通过 ID 来指定服务器条目。

打标签需要通过 ssx 的 tag 子命令来完成,下面是 tag 命令的模式:

ssx tag -i <ENTRY_ID> [-t TAG1 [-t TAG2 ...]] [-d TAG3 [-d TAG4 ...]]
  • -i 指定 list 命令输出的要操作的服务器对应的 ID 字段
  • -t 指定要添加的标签名,可以多次指定就可以同时添加多个标签
  • -d 打标签的同时也支持删除已有标签,通过 -d 指定要删除的标签名,同样也可以多次指定

当我们完成对服务器的打标签后,比如假设增加了一个 centos 的标签,那么我此时就可以通过标签来进行登录了:

ssx centos

登录服务器

如果没有指定任何参数标志,ssx 将把第二个参数作为搜索关键词,从主机和标签中搜索,如果没有匹配任何条目,ssx将把它作为一个新条目,并尝试登录。

# 通过交互登录,只需运行SSX
ssx

# 按条目id登录
ssx -i <ID>

# 通过地址登录,支持部分单词
ssx <ADDRESS>

# 通过标签登录
ssx <TAG>

执行命令

类似 ssh,ssx 也支持非交互式地执行指定的 shell 命令,可通过 -c 参数执行单条命令,如果没有执行 -c, ssx 会将第二个参数及其后面的所有参数均视为 shell 命令

ssx <ADDRESS> [-c] <COMMAND> [--timeout 30s]
ssx <TAG> [-c] <COMMAND> [--timeout 30s]

# 例如:登录192.168.1.100,执行命令'pwd':
ssx 1.100 pwd
# 通过 centos 标签执行
ssx centos [-c] pwd

删除服务器条目

ssx delete -i <ENTRY_ID>

支持的环境变量

  • SSX_DB_PATH: 用于存储条目的数据库文件,默认为 ~/.ssx.db
  • SSX_CONNECT_TIMEOUT: SSH连接超时,默认为: 10s
  • SSX_IMPORT_SSH_CONFIG: 是否导入用户ssh配置,默认为空。
  • SSX_UNSAFE_MODE: 密码以不安全模式存储
  • SSX_SECRET_KEY: 用于加密条目密码的密钥,默认使用所在服务器的设备ID

这里解释一下 SSX_IMPORT_SSH_CONFIG 的作用,这个环境变量不设置时,ssx 默认是不会读取用户的 ~/.ssh/config 文件的,ssx 只使用自己存储文件进行检索。如果将这个环境变量设置为非空(任意字符串),ssx 就会在初始化的时候加载用户 ssh 配置文件中存在的服务器条目,但 ssx 仅读取用于检索和登录,并不会将这些条目持久化到 ssx 的存储文件中,所以,如果 ssx IP 登录时,这个 IP~/.ssh/config 文件中已经配置过登录验证方式的服务器,ssx 匹配到就直接登录了。但 ssx list 查看时,该服务器会被显示到 found in ssh config 的表格中,这个表格中的条目是不具有 ID 属性的。

Upgrade SSX

新增于: v0.3.0

ssx upgrade

版权

© 2023-2024 Vimiix

在 MIT 许可协议下分发。可查看 LICENSE 文件详情

MIT License Copyright (c) 2023 Qian Yao Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

🦅 ssx is a retentive ssh client. 展开 收起
Go 等 2 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化