I’ve two solutions for you. Here is my shell script:
Solution # 1 Shell script
sshconnect.sh
Code:
#!/bin/bash
PROFILES=~/.ssh.profiles
aindex=1
hosts=( null )
# read array
function readHosts(){
exec 3<&0
exec 0<$PROFILES
while read line
do
rline=$(echo $line | egrep -v "^#" | sed '/^$/d')
if [ "$rline" != "" ]; then
user=$(echo "$rline" | awk -F'|' '{ print $1}')
ip=$(echo "$rline" | awk -F'|' '{ print $2}')
port=$(echo "$rline" | awk -F'|' '{ print $3}')
[ "$port" == "" ] && port=22 || :
hosts[$aindex]=$(echo "ssh -p$port $user@$ip")
aindex=` expr $aindex + 1 `
fi
done
exec 0<&3
}
# display choice and connect to server
function displayHosts(){
echo "------------------------------------"
echo "Sr# : SSH Server Host Name"
echo "------------------------------------"
for (( i=1; i<$aindex; i++ ))
do
echo "#$i : ${hosts[$i]}"
done
read -p "Enter host number: " myHostNumber
echo "Connecting to ${hosts[$myHostNumber]} ..."
${hosts[$myHostNumber]}
}
readHosts
displayHosts
Above is my script
~/.ssh.profiles file - stores SSH Username | IP and Optional port number:
Code:
#format USER|IP|Port
usr1|192.168.1.1|22
usr2|192.168.1.2
usr3|192.168.1.3
vivek|vpn.nixcraft.in|555
All you have to do is copy above two files and customize
~/.ssh.profiles file and run script as follows:
Code:
chmod +x sshconnect.sh
Run as
You will get
Code:
------------------------------------
Sr# : SSH Server Host Name
------------------------------------
#1 : ssh -p22 usr1@192.168.1.1
#2 : ssh -p22 usr2@192.168.1.2
#3 : ssh -p22 usr3@192.168.1.3
#4 : ssh -p555 vivek@vpn.nixcraft.in
Enter host number: 4
Connecting to ssh -p555 vivek@vpn.nixcraft.in ...
Solution # 2 GUI tools
If you want GUI tool i recommend gpass; see image below. You can just select host and connect it
It is upto you which solution you want to use. See
Linux password manager that also works under Windows / OS X | nixCraft