connect.bash is a shell script wrapper for SSH connections. It provides an in-terminal menu of connection choices that can be added by the user. The script has the ability to perform SSH tunneling (upon first connection to a given host). Succeeding connections to a host will then use the tunnel established in the first connection.
Connection options are stored in a colon-delimited config file ~/.sshconnectrc that has the following format:
number:"title":loginname:hostname:tunnelhostname:localport:usestoken
number = Connection number (ex. 1)
title = Connection menu title (ex. "Server A")
loginname = Remote login name (ex. John.Smith)
hostname = Hostname of remote system (ex. servera.com)
tunnelhostname = Hostname in which to establish a tunnel (ex. servera.com)
localport = Local port number for SSH tunnel (ex. 45678)
usestoken = Set to true or false if the connection requires an RSA Token Passcode.
Users can also create/modify ~/.sshconnectrc on their own with a text editor.
NOTE: SSH access to some remote systems require a bastion host login then the user is redirected to a host of their choice. In these situations, hostname would be the bastion host and tunnelhostname would be a destination host.
- Any operating system with bash and an SSH client.
- bash
- openssh
- stoken (OPTIONAL)
- Clone or download
ssh-connectpackage - Copy
connect.bashto ~/bin or another directory that is in your $PATH - Create symlink:
ln -s connect.bash connect[OPTIONAL]
MasterControl is a feature of SSH that allows successive connections to a host to "piggyback" off of the initial connection. There are pros and cons to this described here. Insert the following text at the top in your SSH config file (~/.ssh/config)
ControlMaster auto
ControlPath ~/.ssh/tmp/%h_%p_%r
ControlPath file template %h = hostname; %p = port; %r = remote username
connect.bash or connect (if you use a symlink) will present the user with a menu in which the user selects the connection option by entering the connection number.
$ connect
...
****************************
* SELECT HOST COMPUTER *
* **** *
* 1) Server A *
* 2) Server B *
* *
* A) Add Entry *
****************************
Select option: