zsh-ssh
Better host completion for ssh in Zsh.
git clone https://github.com/sunlei/zsh-ssh.gitsunlei/zsh-sshzsh-ssh
Better host completion for ssh in Zsh.
Installation
Make sure you have fzf installed.
The column command is optional and only improves table/preview alignment; the plugin falls back to plain formatting when it is unavailable.
Zinit
zinit light sunlei/zsh-ssh
Antigen
antigen bundle sunlei/zsh-ssh
Oh My Zsh
-
Clone this repository into
$ZSH_CUSTOM/plugins(by default~/.oh-my-zsh/custom/plugins)git clone https://github.com/sunlei/zsh-ssh ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-ssh -
Add the plugin to the list of plugins for Oh My Zsh to load (inside
~/.zshrc):plugins=(zsh-ssh $plugins)
-
Start a new terminal session.
Sheldon
-
Add this config to
~/.config/sheldon/plugins.toml[plugins.zsh-ssh] github = 'sunlei/zsh-ssh'
-
Run
sheldon lockto install the plugin. -
Start a new terminal session.
Manual (Git Clone)
-
Clone this repository somewhere on your machine. For example:
~/.zsh/zsh-ssh.git clone https://github.com/sunlei/zsh-ssh ~/.zsh/zsh-ssh
-
Add the following to your
.zshrc:source ~/.zsh/zsh-ssh/zsh-ssh.zsh
-
Start a new terminal session.
Usage
Just press Tab after ssh command as usual.
Configuration
Known hosts are not included by default. To include plain hostnames from ~/.ssh/known_hosts, enable it explicitly:
export ZSH_SSH_INCLUDE_KNOWN_HOSTS=1
By default, the plugin reads $HOME/.ssh/known_hosts. To use another file:
export ZSH_SSH_KNOWN_HOSTS_FILE="$HOME/.ssh/known_hosts"
Hashed known_hosts entries cannot be converted back to hostnames and are skipped.
SSH Config Example
You can use #_Desc to set description.
~/.ssh/config
Host Bastion-Host
Hostname 1.1.1.1
User sunlei
Host Development-Host
Hostname 2.2.2.2
IdentityFile ~/.ssh/development-host
#_Desc For Development
You can use OpenSSH Tag to group hosts in the list:
Host Work-Bastion
Hostname bastion.example.com
User deploy
Tag work
#_Desc Bastion host
Host Home-NAS
Hostname 192.168.1.20
User root
Tag personal
#_Desc NAS
When any host has a Tag, zsh-ssh shows a Tag column. You can type work
in fzf to search for tagged hosts, or use ssh tag:work<Tab> to filter the
completion list by tag before fzf opens.
Include files are also supported. For example, your main config can include separate files:
~/.ssh/config
Include ~/.ssh/config.d/company.ssh_config
Include ~/.ssh/config.d/home.ssh_config
Include ~/.ssh/config.d/work.ssh_config
# OR
Include ~/.ssh/config.d/*.ssh_config
more like this
deoplete-zsh
term-dmenu
Replace dmenu with a floating terminal and FZF! Comes with helper scripts for program/app launching, window switching,…