Skip to content

vimiix/ssx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

English | 中文

🦅 ssx is a retentive ssh client.

It will automatically remember the server which login through it, so you do not need to enter the password again when you log in again.

Document

👉 https://ssx.vimiix.com/

Getting Started

Installation

Download binary from releases, extract it and add its path to your $PATH list.

If you want to install from source code, you can run command under project root directory:

make ssx

then you can get ssx binary in dist directory.

Add a new entry

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

If given address matched an exist entry, ssx will login directly.

List exist entries

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

ssx does not read ~/.ssh/config by default unless the environment variable SSX_IMPORT_SSH_CONFIG is set. ssx will not store user ssh config entries to itself db, so you won't see their ID in the output of the list command

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

Tag an entry

ssx tag --id <ENTRY_ID> [-t TAG1 [-t TAG2 ...]] [-d TAG3 [-d TAG4 ...]]

Once we tag the entry, we can log in through the tag later.

Login

If not specified any flag, ssx will treat the second argument as a keyword for searching from host and tags, if not matched any entry, ssx will treat it as a new entry, and try to login.

# login by interacting, just run ssx
ssx

# login by entry id
ssx --id <ID>

# login by address, support partial words
ssx <ADDRESS>

# login by tag
ssx <TAG>

Execute command

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

# for example: login 192.168.1.100 and execute command 'pwd':
ssx 1.100 pwd

Delete an entry

ssx delete --id <ENTRY_ID>

Supported environment variables

  • SSX_DB_PATH: DB file to store entries, default is ~/.ssx.db.
  • SSX_CONNECT_TIMEOUT: SSH connect timeout, default is 10s.
  • SSX_IMPORT_SSH_CONFIG: Whether to import the user ssh config, default is empty.
  • SSX_UNSAFE_MODE: The password is stored in unsafe mode
  • SSX_SECRET_KEY: The secret key for encrypting entry's password, default will use machineid

Upgrade SSX

Since: v0.3.0

ssx upgrade

Copyright

© 2023-2024 Vimiix

Distributed under the MIT License. See LICENSE file for details.