备案的网站可以攻击吗,杭州公司注册地址租赁一般多少钱,天津站内关键词优化,淘宝客网站开发视频需求来源
对于一个后端程序员来说#xff0c;在工作中免不了要和繁杂的服务器打交道#xff0c;ssh 是不可或缺的开发工具。但每次登录都需要输入密码的行为#xff0c;对于认为一切皆可自动化的程序员来说#xff0c;肯定是有点繁琐的#xff08;如果您是使用图形化界面…需求来源
对于一个后端程序员来说在工作中免不了要和繁杂的服务器打交道ssh 是不可或缺的开发工具。但每次登录都需要输入密码的行为对于认为一切皆可自动化的程序员来说肯定是有点繁琐的如果您是使用图形化界面的用户可忽略。
所以我在前段时间考虑我应该自己实现一个 ssh 客户端它不需要拥有许多复杂的功能只需要满足我以下这几个需求即可满足日常使用
和 ssh 保持差不多的使用习惯仅在第一次登录时询问我密码后续使用无需再提供密码可以给服务器它任意的标签这样我就可以自由地通过IP 或者标签来登录
于是乎近期我在业余时间就设计并编写了 ssx 这个轻量级的具有记忆的 ssh 客户端。它完美的实现了上面我所需要的功能也已经被我愉快的应用到了日常的开发中。
项目源码地址https://github.com/vimiix/ssx
使用方式
下面就简单介绍一下 ssx 的使用方式。
ssx 是通过 golang 开发的一个独立的二进制文件安装方式就是从 release 页面下载对应平台的软件包解压后把 ssx 二进制放到系统的任意目录下这里我习惯放到 /usr/local/bin 目录下如果你选择其他目录下需要确保存放的目录添加到 $PATH 环境变量中这样后续使用我们就不用再添加路径前缀直接通过 ssx 命令就可以运行了。
登录服务器
使用 ssx 登录服务器的时候基本和 ssh 使用习惯一致下面是基本命令模式
ssx [-s] [USER]HOST[:PORT] [-k IDENTITY_FILE]在这个命令中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 命令来查看目前 ssx 存储的所有服务器列表。下面是一个列表示例
# output example
# Entries (stored in ssx)
# ID | Address | Tags
#-----------------------------------------------------
# 1 | root172.23.1.84:22 | centosssx 会给每个服务器分配一个唯一的 ID我们在打标签时就需要通过 ID 来指定服务器条目。 当然既然服务器有唯一 IDssx 也支持通过 ID 来进行登录ssx -i ID 打标签需要通过 ssx 的子命令 tag 来完成下面是 tag 命令的模式
ssx tag -i ENTRY_ID [-t TAG1 [-t TAG2 ...]] [-d TAG3 [-d TAG4 ...]]-i 指定 list 命令输出的要操作的服务器对应的 ID 字段-t 指定要添加的标签名可以多次指定就可以同时添加多个标签-d 指定要删除的标签名同样也可以多次指定
当我们完成对服务器的打标签后比如上面示例中的服务器我增加了一个 centos 的标签那么我此时就可以通过标签来进行登录了
// -t 可省略
ssx [-t] centos删除服务器记录
ssx 也支持删除服务器记录命令如下
ssx delete -i ID一旦删除ssx 不会保留该服务器的任何信息所以下次登录时会等同于新的服务器来对待ID 也会重新生成。
目前支持的环境变量
除了上面提到的 SSX_DB_PATH 可以指定存储数据的文件外ssx 还支持
SSX_CONNECT_TIMEOUTSSH连接超时时间默认为 10sSSX_IMPORT_SSH_CONFIG是否引用用户 ssh 配置默认为空
这里我解释一下 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 属性的以下是一个示例
export SSX_IMPORT_SSH_CONFIGtrue
ssx list
# output example
# Entries (stored in ssx)
# ID | Address | Tags
#-----------------------------------------------------
# 1 | root172.23.1.84:22 | centos
#
# Entries (found in ssh config)
# Address | Tags
# ---------------------------------------------------------------
# gitssh.github.com:22 | github.com