SSH has a nice feature in which you can store aliases for frequently accessed hosts.
Combining this with fzf
, you can have a nice quick shortcut to quickly pick a server to connect to into.
This comes in very handy if you need to ssh into different servers and forget their IP or hostname often.
Here’s a sample ssh config file (normally located at ~/.ssh/config
):
# see https://man.openbsd.org/ssh_config.5 for all the available configuration settings
Host runner-staging
HostName 10.0.0.8
User alpha
Host runner-production
HostName 10.0.0.9
User beta
Host mainframe
HostName mainframe.computer.world
User hackerman
Here’s a small shell function which calls fzf with the hostnames configured and allows you to pick one to connect to:
s () {
local server
server=$(grep -E '^Host ' ~/.ssh/config | awk '{print $2}' | fzf)
if [[ -n $server ]]; then
ssh $server
fi
}
Add this function to your .bashrc
(or .zshrc
, or whichever config file for your shell) and reload the configuration.
Now, you can quickly ssh into mainframe
by typing s
:
$ s
# fzf will allow to quickly search and pick your server
> runner-staging
runner-production
mainframe
3/3 ──────────
# press enter and you will be connected!
[hackerman@mainframe.computer.world ~]$
Top comments (3)
Your snippet contains a syntax error. The fourth line should be
if [[ -n $server ]]; then
Thank you so much for the correction. Somehow dev.to messed it up when I imported this post from my blog.
Very good, this is great, especially when you have a lot of Hosts to manage!