manssh is a command line tool for managing your ssh alias config easily, inspired by storm project, powered by Go.
This project is actually a simple glue project, the most complex and core parsing ssh config file logic implements by ssh_config, I didn't do much.
At first it was just a imitation of storm, now it has become a little different.
- No dependence.
- Add, list, query, delete ssh alias record.
- Backup ssh config.
- Support Include directive.
go get -u github.com/xwjdsh/manssh/cmd/manssh
brew tap xwjdsh/tap brew install xwjdsh/tap/manssh
alias manssh='docker run -t --rm -v ~/.ssh/config:/root/.ssh/config wendellsun/manssh'
Download it from releases, and extract it to your
% manssh NAME: manssh - Manage your ssh alias configs easily USAGE: manssh [global options] command [command options] [arguments...] VERSION: master COMMANDS: add, a Add a new SSH alias record list, l List or query SSH alias records update, u Update SSH record by specifying alias name delete, d Delete SSH records by specifying alias names backup, b Backup SSH config files help, h Shows a list of commands or help for one command GLOBAL OPTIONS: --file value, -f value (default: "/Users/wendell/.ssh/config") --help, -h show help --version, -v print the version
Add a new alias
# manssh add test2 220.127.116.11 # manssh add test1 [email protected]:77 -c IdentityFile=~/.ssh/wendell % manssh add test1 [email protected]:77 -i ~/.ssh/wendell ✔ alias[test1] added successfully. test1 -> [email protected]:77 identityfile = /Users/wendell/.ssh/wendell
Username and port config is optional, the username is current login username and port is
22 by default.
-c to set more config options. For convenience,
-i xxx can instead of
List or query alias
# manssh list # manssh list "*" # manssh list Test -ic % manssh list test1 77 ✔ Listing 1 records. test1 -> [email protected]:77 identityfile = /Users/wendell/.ssh/wendell
It will display all alias records If no params offered, or it will using params as keywords query alias records.
If there is a
-it option, it will ignore case when searching.
Update an alias
# manssh update test1 -r test2 # manssh update test1 [email protected]:22022 % manssh update test1 -i "" -r test3 -c hostname=18.104.22.168 -c port=22022 ✔ alias[test3] updated successfully. test3 -> [email protected]:22022
Update an existing alias record, it will replace origin user, hostname, port config's if connected string param offered.
You can use
-c to update single and extra config option,
-c identityfile= -c proxycommand= will remove
-i xxx can instead of
Rename the alias specified by
Delete one or more alias
# manssh delete test1 % manssh delete test1 test2 ✔ alias[test1,test2] deleted successfully.
Backup ssh config
% manssh backup ./config_backup ✔ backup ssh config to [./config_backup] successfully.
For Include directive
If you use the
Include directive, there are some extra notes.
-p(--path) flag for
delete command to show the file path where the alias is located, it can also be set by the MANSSH_SHOW_PATH environment variable.
true to show the file path where the alias is located. Default is
-ap(--addpath) flag for
add command to specify the file path to which the alias is added, it can also be set by the MANSSH_ADD_PATH environment variable.
This file path indicates to which file to add the alias. Default is the entry config file.
For convenience, you can export these environments in your
export MANSSH_SHOW_PATH=true export MANSSH_ADD_PATH=~/.ssh/config.d/temp