3个版本

0.1.3 2019年12月19日
0.1.2 2019年11月30日
0.1.0 2019年11月30日

#94 in #quickly

MIT 许可证

9KB
137

🖥️ sshh

(即 ssh hosts) - 快速连接到主机

Actions Status Crates.io

问题

  • 有很多主机需要SSH连接,但我永远也记不住特定的IP地址
  • 无法使用域名,因为它们有时位于Cloudflare之后
  • 无法使用子域名,因为它有时会暴露IP地址
  • .ssh/config不支持服务器的分组
  • 我的.bashrc文件中充满了混乱的alias

sshh允许您在配置文件中列出所有主机,然后通过名称连接到它们。

用法

$ sshh project-server # connect to the `project-server` host

$ sshh -g acme-corp main # connect to the `main` host under the `acme-corp` group

给定一个模糊的主机名,sshh将连接到配置文件中定义的最后一个。

sshh最终会调用带有合适参数的ssh,所以请确保它已安装。

安装

  1. 使用cargo安装:cargo install sshh
  2. GitHub发布页面下载二进制文件
  3. 自行构建和安装
    1. 克隆仓库
    2. 使用以下命令构建:cargo build --release
    3. 使用以下命令安装:cargo install --path .

配置

sshh使用yaml文件格式,通常存储在~/.config/sshh.yml。您可以通过-c标志传递自定义配置。

服务器有以下选项

  • name:服务器名称
  • user(可选):默认为“root”
  • host:域名或IP地址
  • port(可选):默认为22
  • forwarding(可选):是否启用认证代理转发,默认为false
  • identity_key(可选):要使用的身份密钥的位置,默认为无

可以将服务器放入组中,也可以单独列出。在servers映射下列出单个服务器,在groups下列出组。配置文件使用serde_yaml反序列化。下面的示例应给出预期的格式的好指示。

servers:
    - name: project-server
      user: banana
      host: 1.2.3.4
      port: 1337
      forwarding: true
    - name: vpn
      host: 2.3.4.5
groups:
    - name: random-company
      servers:
          - name: main
            user: app
            host: random-company.com
          - name: backup
            user: app
            host: backup.random-company.com
    - name: acme-corp
      servers:
          - name: main
            host: main.acme-corp.com
          - name: venus
            host: venus.acme-corp.com

依赖关系

约2.5-3.5MB
~63K SLoC