π¦ 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.
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.
ssx [-s] [USER@]HOST[:PORT] [-k IDENTITY_FILE]
If given address matched an exist entry, ssx will login directly.
ssx list
# output example
# Entries (stored in ssx)
# ID | Address | Tags
#-----+----------------------+--------------------------
# 1 | [email protected]: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 | [email protected]:22 | centos
#
# Entries (found in ssh config)
# Address | Tags
# -----------------------------------+----------------------------
# [email protected]:22 | github.com
ssx tag -i <ENTRY_ID> [-t TAG1 [-t TAG2 ...]] [-d TAG3 [-d TAG4 ...]]
Once we tag the entry, we can log in through the tag later.
If more than one flag of -i
, -s
,-t
specified,
priority is ENTRY_ID > ADDRESS > TAG_NAME
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 -i <ID>
# login by address, support partial words
ssx [-s] <ADDRESS>
# login by tag
ssx [-t] <TAG>
ssx delete -i <ENTRY_ID>
SSX_DB_PATH
: DB file to store entries, default is~/.ssx.db
.SSX_CONNECT_TIMEOUT
: SSH connect timeout, default is10s
.SSX_IMPORT_SSH_CONFIG
: Whether to import the user ssh config, default is empty.
Β© 2023 Qian Yao
Distributed under the MIT License. See LICENSE file for details.