Linux-Noob Forums
SSH and BASH - Printable Version

+- Linux-Noob Forums (https://www.linux-noob.com/forums)
+-- Forum: Linux Noob (https://www.linux-noob.com/forums/forum-3.html)
+--- Forum: Tips and Tricks (https://www.linux-noob.com/forums/forum-59.html)
+--- Thread: SSH and BASH (/thread-1506.html)



SSH and BASH - znx - 2007-03-22


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



Code:
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



Code:
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:



Code:
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



Code:
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



Code:
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:



Code:
source ~/.bashrc




 

Now here is the magic:



Code:
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!

 



Code:
ssh home
ssh work
ssh somefriend
ssh here
ssh there




 

;) Love Linux ;)




SSH and BASH - xDamox - 2007-03-23

Nice tip/trick :)