fzf + SSH Config Hosts
Andrés Villarreal

Andrés Villarreal @kaeruct

About: I'm a software developer, passionate about the web, frontend technologies, and the open source ecosystem.

Location:
Berlin
Joined:
May 15, 2020

fzf + SSH Config Hosts

Publish Date: Oct 10 '24
6 3

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

Enter fullscreen mode Exit fullscreen mode

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
}

Enter fullscreen mode Exit fullscreen mode

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 ~]$ 

Enter fullscreen mode Exit fullscreen mode

Comments 3 total

  • dserv-nh
    dserv-nhOct 11, 2024

    Your snippet contains a syntax error. The fourth line should be
    if [[ -n $server ]]; then

    • Andrés Villarreal
      Andrés VillarrealDec 3, 2024

      Thank you so much for the correction. Somehow dev.to messed it up when I imported this post from my blog.

  • Flávio Nunes
    Flávio NunesOct 11, 2024

    Very good, this is great, especially when you have a lot of Hosts to manage!

Add comment