autossh
Alias-based SSH/SCP toolkit with encrypted password storage.
Wraps ssh/scp via pexpect so you can connect to any host by name without
typing passwords. All passwords are stored AES-256-GCM encrypted in a local
hosts file.
Install
pip install autossh
Python 3.8+ required. Runtime dependencies: pexpect, pyyaml, cryptography.
Quick start
# 1. Open the host file editor (creates the file on first run)
aedit
# 2. Add a host line, save and quit vim:
# 192.168.0.1 root mypassword
# 3. On save, aedit prompts for a master password and encrypts all passwords.
# The master password can be saved to ~/.config/autossh/.env for future use.
# 4. Connect
assh 192.168.0.1
Commands
| Command | Description |
|---|---|
assh <dest> |
SSH to host |
apush <src> <dest>:<path> |
Push local file to remote |
apull <dest>:<path> <dst> |
Pull remote file to local |
acat [dest] |
Print hosts file (passwords decrypted) |
aedit |
Edit hosts file (passwords decrypted in editor, re-encrypted on save) |
amaster init |
Encrypt a plaintext hosts file for the first time |
amaster |
Rekey: re-encrypt all passwords with a new master password |
Run any command with -h for usage details.
Host file format
Each non-comment line:
host[:port][[alias]] user password
Examples:
192.168.0.1 root password1
192.168.0.2:36000 root password2 ## custom port
192.168.0.3[dev3] root password3 ## with alias
192.168.0.4:22[dev4] root password4 ## port + alias
192.168.0.5 None None ## anonymous
host— IP or hostnameport— optional, defaults to 22alias— optional short name forassh <alias>user/password— useNonefor anonymous SSH
Password encryption
Passwords are encrypted with AES-256-GCM using a master password you choose.
The master password is derived into a file key via scrypt and stored in
~/.config/autossh/.env (chmod 0600) so you only type it once per machine.
aedit decrypts passwords in memory (temp file in /dev/shm) so the editor
always shows plaintext; the hosts file on disk always stores ciphertext.
Configuration
Optional config at ~/.config/autossh/config.yaml:
timeout: 30 # pexpect timeout in seconds (default: 30)
host_file: ~/.config/autossh/hosts # override host file path
Release files for autossh-cli 1.7.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| autossh_cli-1.7.0.tar.gz | 16.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| autossh_cli-1.7.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 35.3 kB
Release files / autossh_cli-1.7.0.tar.gz
| Download URL | autossh_cli-1.7.0.tar.gz |
|---|---|
| Size | 16.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
28997d3b62c16e206b74bafb8e54a43143b27c58b6f60a166a26dfc0f2fdb1e9
|
|
BLAKE2b-256 checksum How to use checksums |
3e14eb17808fe8ed44fde4d789922207fd0a4e784392c205010805a359744e28
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.6
|
Release files / autossh_cli-1.7.0-py3-none-any.whl
| Download URL | autossh_cli-1.7.0-py3-none-any.whl |
|---|---|
| Size | 18.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ad810e16f88a25e2d1e26790a6a0005e7d8a7b364d77998c99a10e7677ed893e
|
|
BLAKE2b-256 checksum How to use checksums |
ff01d01f4f1a7b233d96f3bcc593eb037b7c2722b46ed38eb9aa28271ed5a2f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.6
|