amg-web / sshto

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

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

sshto

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

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

paypal Feel free to support the project!)

Send me some coins and I'll send you one big 'Thank You!' back!)
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. Can run commands, copy files, tunnel ports and connect.

License:MIT License


Languages

Language:Shell 100.0%