Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/vaniacer/sshto
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.
https://github.com/vaniacer/sshto
Last synced: 6 days ago
JSON representation
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.
- Host: GitHub
- URL: https://github.com/vaniacer/sshto
- Owner: vaniacer
- License: mit
- Created: 2017-11-16T11:16:31.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-10-31T10:48:57.000Z (14 days ago)
- Last Synced: 2024-10-31T11:29:08.136Z (14 days ago)
- Language: Shell
- Homepage:
- Size: 197 KB
- Stars: 580
- Watchers: 24
- Forks: 59
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
README
# sshto
[![Twitter Follow](https://img.shields.io/twitter/follow/Vaniacer?style=social)](https://twitter.com/Vaniacer)
[![paypal](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/sshto?locale.x=en_US) Feel free to support the project!)Small bash script that builds a menu (via dialog) from your ~/.ssh/config.
![screeenshot](https://user-images.githubusercontent.com/18072680/60570513-69e99f00-9d7a-11e9-916d-48b74fa7585a.png)Allows you to connect to your servers or run commands from menu. Available commands:
![cmds](https://user-images.githubusercontent.com/18072680/211161226-1c5eec5a-634b-4902-90cd-5947dd95083e.png)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 localhostHost rybserver2 #Second server
HostName localhostHost rybserver3 #Third server
HostName localhost#Host DUMMY #Moscow#
Host moserver1 #First server
HostName localhostHost moserver2 #Second server
HostName localhostHost 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." >> ~/.sshtorcYou can customize dialog itself a bit by creating and editing its config file:
dialog --create-rc ~/.dialogrc
nano ~/.dialogrcIf 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](https://github.com/vaniacer/bashui) here is how it looks:
![bashui-hosts](https://habrastorage.org/getpro/habr/upload_files/024/c74/38e/024c7438e6429f5e37a8a71d98bf7edb.png)![bashui-commands](https://habrastorage.org/getpro/habr/upload_files/495/2cc/526/4952cc52616db16acfa7b2fd9e8d366f.png)
Try it [bashui-sshto](https://github.com/vaniacer/bashui/blob/master/demo_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
Tom Lawrens video guide about ssh config and sshto
[![Twitter Follow](https://img.shields.io/twitter/follow/Vaniacer?style=social)](https://twitter.com/Vaniacer)
[![paypal](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://paypal.me/sshto?locale.x=en_US) Feel free to support the project!)СБПшка на винишко
![4food](https://github.com/user-attachments/assets/db4500f2-3399-469c-995e-808b87c48f1e)