Skip to content
/ sshto Public

Small bash script to manage your ssh connections. It builds menu (via dialog) from your ~/.ssh/config. It can not only connect but also to run commands, copy files, tunnel ports.

License

Notifications You must be signed in to change notification settings

vaniacer/sshto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sshto

Twitter Follow paypal Feel free to support the project!)

Small bash script that builds a menu (via dialog) from your ~/.ssh/config.
screeenshot
Allows you to connect to your servers or run commands from menu. Available commands:
cmds
Your commands can be easily added to this list. Just edit this part of the script:

cmdlist=(
    #Command#    #Description#
    "${slct[@]}" #De/Select command
    "Username"   "Change ssh username to \Z1$GUEST\Z0"
    "Add tab"    "Add terminal tab with \Z1sshto\Z0 for \Z4$target\Z0"
    "Ssh tab"    "Add terminal tab with \Z1ssh\Z0 to \Z4$target\Z0"
    ''           ''
    "ls -lah"    "List Files"
    "free -h"    "Show free memory"
    "df  -ih"    "Show free inodes"
    "df   -h"    "Show free disk space"
    "Custom"     "Run custom command on \Z4$target\Z0"
    "Script"     "Run custom script on \Z4$target\Z0"
    ''           ''
    'Yes'        "Say 'yes' to SSH"
    "Info"       "Full system info"
    'Fix_id'     "Update host in known_hosts"
    "Sshkey"     "Add my ssh key to \Z4$target\Z0"
    "Alias"      "Add my useful aliases to \Z4$target\Z0"
    "Copy"       "Copy selected file or dir to \Z4$target\Z0"
    ''           ''
    "Home"       "Change home folder \Z4$home\Z0 on local server"
    "Dest"       "Change destination folder \Z4$DEST\Z0 on \Z4$target\Z0"
    "Upload"     "Upload file or folder from \Z4$home\Z0 to \Z4$target:${DEST}\Z0"
    "Download"   "Download file or folder from \Z4$target:${DEST}\Z0 to \Z4$home\Z0"
    "Mount"      "Mount remote folder \Z4$target:$DEST\Z0 to \Z4$home\Z0"
    "Unmount"    "Unmount remote folder \Z4$target:$DEST\Z0 from \Z4$home\Z0"
    ''           ''
    "Local"      "Change local  port \Z1$LOCAL\Z0"
    "Remote"     "Change remote port \Z1$REMOTE\Z0"
    "Tunnel"     "Start portunneling from \Z4$target:$REMOTE\Z0 to \Z4localhost:$LOCAL\Z0"
    ''           ''
    "ShowConf"   "Show ssh config for this host"
    "EditConf"   "Edit ssh config for this host"
)

First collumn - command, second - description.
Simple commands like ls -la could be added as is.
A list of commands or a complicated logic should be added via function.
Empty values('') could be used as a delimiter.
You can quick jump to the selected server via CONNECT button.
To close ssh session press CTRL+D or run exit command, it'll bring you back to sshto commands section.

Optional hosts description could be added like this:

Host server1 #Description, it could be more than one word
HostName 192.168.0.1
Port 22
User admin

Optional start menu delimiters '---{ Group Name }---' could be added like this:

#Host DUMMY #Group Name#

If you are unhappy with this 'DUMMY' group name template, or you actually have a host named 'dummy', you can change this template by ajusting this variable group_id=dummy.
All these additions won't break your ssh configs coz they are considered as comments.


~/.ssh/config example:

#Host DUMMY #Rybinsk#

Host rybserver1 #First server
HostName localhost

Host rybserver2 #Second server
HostName localhost

Host rybserver3 #Third server
HostName localhost

#Host DUMMY #Moscow#

Host moserver1 #First server
HostName localhost

Host moserver2 #Second server
HostName localhost

Host moserver3 #Third server
HostName localhost

Script greps data from multiple config files via pattername config* in ~/.ssh dir.
So you can split config to multiple files and use them with Include directive, example:

Include config_moscow
Include config_rybinsk
Include config*

All preset variables and functions could be tweaked via ~/.sshtorc config file:

echo "REMOTE=9000  # Remote port for tunneling." >> ~/.sshtorc

You can customize dialog itself a bit by creating and editing its config file:

dialog --create-rc ~/.dialogrc
nano ~/.dialogrc

If you don't have dialog and don't want(or can't) to install it, there is a dialog-less version of sshto in my new project bashui here is how it looks: bashui-hosts

bashui-commands

Try it bashui-sshto!

How to install

Clone\download this project, go to it's folder and run:

sudo cp sshto /usr/bin/

#and to unistall
sudo rm /usr/bin/sshto

See how it works at asciinema

ssh config guide
Tom Lawrens video guide about ssh config and sshto

Twitter Follow paypal Feel free to support the project!)

Twitter DOGE: D7qJBRU3UpXES9EwtvE8YZSNAVgFEmz3py
dodge

BTC: 1LxRxsyXP389YW3Ezw9YzNetE5VYj1RaJf
btc

BCH: qqnssal30x6acrga6zt4pd4q2s2t8um3cyqvd37qs7
bch

ETH: 0xd7e17A37DD936B211790ba70Aa985448277030E8
eth

XMR: 484z9YpiD4VBd4BfsaG7jKGYGuJ84tYJyCJBX4ZnAPqQXsUWgTY14TKRH3JLosFSAsKsv75nyt9yWPkFMUJhryxi7zccHNB
mon

LTC: LRVPYR7dvRVdNET23gg3fvTwDM9hotQkZw
ltc

DASH: Xtz7P6GasicE9yS8zXkH3PH2qAF2qWJADG
dash

ZEC: t1ZDgHci8yDVkoGvUFG7QtxUNRuzsF1Qtse
zec

MKR: 0xd7e17A37DD936B211790ba70Aa985448277030E8
mkr

About

Small bash script to manage your ssh connections. It builds menu (via dialog) from your ~/.ssh/config. It can not only connect but also to run commands, copy files, tunnel ports.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

Packages

 
 
 

Contributors 4

  •  
  •  
  •  
  •  

Languages