Jump to content
Sign in to follow this  
znx

SSH and BASH

Recommended Posts

How many times have I seen people using SSH aliases to shorthand the long statements they need to type to login:

alias ssh-home="ssh -p 12345 znx@somelong.hostname.com"

 

Now whilst this eases the pain, you are missing some real magic that SSH and BASH can provide you! So lets get started:

 

Edit/Make the ~/.ssh/config

Host some
  HostKeyAlias somelong.hostname.com
  HostName somelong.hostname.com
  User znx
  Port 12345

 

Now what's that all about you say, well now the original long top line can be replaced with:

ssh some

 

MAGIC!

 

But that's not all, you can infact setup BASH to provide you with a tab completion on those new short hostnames!

 

Edit/Add to your ~/.bashrc

HOSTFILE=~/.hosts

function _ssh() {
 local cur
 cur=${COMP_WORDS[COMP_CWORD]}
 if [ "${cur:0:1}" != "-" ]; then
COMPREPLY=( $(awk '/^Host '$2'/{print $2}' $HOME/.ssh/config) )
 fi		
 return 0
}

complete -F _ssh ssh sftp scp
complete -A hostname ssh sftp scp

 

Edit/Add to a ~/.hosts

192.168.1.2  some.long.host hostname
192.168.1.3 other.long.host host

 

To update the current shell you are running do:

source ~/.bashrc

 

Now here is the magic:

ssh s<TAB BUTTON>

 

At which point you will be given the option of "some" or "some.long.host". Better than all that is this, when you edit your ~/.ssh/config or your ~/.hosts to update or add a new host, it is INSTANTLY in your tab complete.

 

Weeeeee!

 

ssh home
ssh work
ssh somefriend
ssh here
ssh there

 

;) Love Linux ;)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×