Redial is a simple shell application that manages your SSH sessions on Unix terminal.

Overview

redial

Build Status License Version

redial is a simple shell application that manages your SSH sessions on Unix terminal.

redial

What's New

0.7 (19.12.2019)

  • Basic support for adding ssh keys to connections
  • Dynamic, Local and Remote port forwarding settings (only one of each can be defined for now)
  • UI state is restored at startup. Redial now remembers last selected connection and folder expanded/collapsed states

Installation

Requirements

Stable Version

Installing via pip

We recommend installing redial via pip:

pip3 install redial

Latest Version

Installing from Git

You can install the latest version from Git:

pip3 install git+https://github.com/taypo/redial.git

Docker

Dockerfile is provided.

Build Dockerfile:

docker build -t redial .

Run redial in Docker Container

docker run -it --rm redial:latest redial

Features

  • Manage your connections in folders/groups
  • Open a file manager to your remote host (Midnight Commander should be installed)
  • Edit/Move/Delete connection
  • Copy SSH Key to remote host

More features coming soon..

Connect to SSH Session (ENTER)

Press ENTER to connect a SSH session.

connect_gif

Add Folder (F6)

Press F6 or click F6 New Folder to add a folder. There must be at least one connection under the folder.

add_folder_gif

Add Connection (F7)

Press F7 or click F7 New Conn. to add a ssh connection.

add_conn_gif

Browse over mc (F5)

Press F5 or click F5 Browse to open mc (Midnight Commander) session.

mc_gif

Remove Connection (F8)

Press F8 or click F8 Remove to remove a session.

remove_gif

Edit Connection (F9)

Press F9 or click F9 Edit to edit a session.

edit_gif

Move sessions and folders

Press CTRL and up/down keys to move session or folder. For macOS users: Use ALT and up/down keys.

move_gif

Notes

Configuration file is stored in ~/.config/redial/sessions. File format is same as the SSH config file. Configuration file can be included in SSH config file with the following way (Make sure that ~/.ssh/config file exists):

sed -i -e '1iInclude ~/.config/redial/sessions' ~/.ssh/config

Platforms

  • Linux
  • macOS

Windows is currently not supported.

License

redial is licensed under the GNU General Public License v3.0.

Comments
  • NameError: name 'fcntl' is not defined When I run redial on windows 11

    NameError: name 'fcntl' is not defined When I run redial on windows 11

    Describe the bug PS C:\Users\realf> redial Traceback (most recent call last): File "c:\users\realf\appdata\local\programs\python\python38\lib\runpy.py", line 194, in _run_module_as_main return run_code(code, main_globals, None, File "c:\users\realf\appdata\local\programs\python\python38\lib\runpy.py", line 87, in run_code exec(code, run_globals) File "C:\Users\realf\AppData\Local\Programs\Python\Python38\Scripts\redial.exe_main.py", line 7, in File "c:\users\realf\appdata\local\programs\python\python38\lib\site-packages\redial_main.py", line 7, in main sys.exit(run()) File "c:\users\realf\appdata\local\programs\python\python38\lib\site-packages\redial\redial.py", line 153, in run app = RedialApplication() File "c:\users\realf\appdata\local\programs\python\python38\lib\site-packages\redial\redial.py", line 38, in init screen = urwid.raw_display.Screen() File "c:\users\realf\appdata\local\programs\python\python38\lib\site-packages\urwid\raw_display.py", line 92, in init fcntl.fcntl(self._resize_pipe_rd, fcntl.F_SETFL, os.O_NONBLOCK) NameError: name 'fcntl' is not defined PS C:\Users\realf> redial Traceback (most recent call last): File "c:\users\realf\appdata\local\programs\python\python38\lib\runpy.py", line 194, in _run_module_as_main return run_code(code, main_globals, None, File "c:\users\realf\appdata\local\programs\python\python38\lib\runpy.py", line 87, in run_code exec(code, run_globals) File "C:\Users\realf\AppData\Local\Programs\Python\Python38\Scripts\redial.exe_main.py", line 7, in File "c:\users\realf\appdata\local\programs\python\python38\lib\site-packages\redial_main.py", line 7, in main sys.exit(run()) File "c:\users\realf\appdata\local\programs\python\python38\lib\site-packages\redial\redial.py", line 153, in run app = RedialApplication() File "c:\users\realf\appdata\local\programs\python\python38\lib\site-packages\redial\redial.py", line 38, in init screen = urwid.raw_display.Screen() File "c:\users\realf\appdata\local\programs\python\python38\lib\site-packages\urwid\raw_display.py", line 92, in init fcntl.fcntl(self._resize_pipe_rd, fcntl.F_SETFL, os.O_NONBLOCK) NameError: name 'fcntl' is not defined

    To Reproduce Steps to reproduce the behavior:

    1. pip3 install redial
    2. run redial command in powershell

    Screenshots image

    Desktop (please complete the following information):

    • OS: Windows 11 latest version
    • python version: 3.8.10
    • redial version: 0.8
    • urwid version: 2.1.2
    opened by realWilliamChin 3
  • config standardı

    config standardı

    ilerde uygulamanın bazı konfigler tutması gerekirse kullanacağımız standart: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html

    default olarak ~/.config/redial dizini olacaktır.

    ilerde tutulabilecek konfigürasyonlara örnek:

    • son seçili bağlantının tekrar girince seçili gelmesi
    • eğer .ssh/config dosyasına bizim yazmamız sıkıntı yaratırsa kendi formatımızda ayrı tutabiliriz.

    bu madde todo'dan çok not gibi oldu. o yüzden issue olarak açıyorum.

    opened by taypo 2
  • Unable to find SSH Keys - WSL Ubuntu

    Unable to find SSH Keys - WSL Ubuntu

    Describe the bug Unable to locate SSH Keys

    To Reproduce SSH to a system that has a preconfigured SSH key pair using the standard id_rsa & id_rsa.pub OR Copy SSH key to server functionality

    Expected behavior SSH to a server using an SSH key with no credentials needed

    Screenshots Screenshot_1028

    Desktop (please complete the following information):

    • OS: WSL Ubuntu
    opened by AlistairHardy 1
  • Recording logs

    Recording logs

    I propose to implement a log of commands when we connect to ssh using asciinema

    Logs will be recorded in a separate directory accessible only to the superuser Administrators can watch what users do sequentially But as I understand it, logs of this kind will take up a lot of space, is it realistic to implement this?

    wontfix 
    opened by petqa 1
  • Arch linux bug with non-root user

    Arch linux bug with non-root user

    Good day! Cannot execute redial with non-root user

    Installed with pip3 install --user redial

    2019-10-03_15-44

    with sudo works fine, how can i debug this?

    Python 3.7.4 pip 19.0.3

    opened by petqa 1
  • IdentityFile support for SSH keys

    IdentityFile support for SSH keys

    Couldn't work out how to configure a remote with a key, added it manually in the config file as it claimed to be compatible with ssh config - however I can't connect to the remote host which is SSH key only.

    Is it possible to include this?

    enhancement 
    opened by danielloader 1
  • Bug fix and correction in 'setup.py'.

    Bug fix and correction in 'setup.py'.

    Bug fix and correction in 'setup.py'.

    Description

    In ssh sessions run with the 'os.system()' command, 'rk' differs according to the state of the last command in the session. If the last command executed or sent in session is 'CTRL C', it returns 'rk = 33280' instead of 'rk = 0'. This causes a logical error in the if block in redial.py to exit. The problem was fixed by changing the if block to continue at 'rk = 33280'.

    Motivation and Context

    Fixed bug in https://github.com/taypo/redial/issues/28. The enviroment in 'setup.py' has been changed to python3 due to default enviroments in some Linux distribution.

    How Has This Been Tested?

    Screenshots (if appropriate):

    Types of changes

    • [x] Bug fix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to change)

    Checklist:

    • [x] My code follows the code style of this project.
    • [ ] My change requires a change to the documentation.
    • [ ] I have updated the documentation accordingly.
    • [x] I have read the CONTRIBUTING document.
    • [ ] I have added tests to cover my changes.
    • [ ] All new and existing tests passed.
    opened by Radar4000 0
  • **SSH key is copied successfully** message is shown even cancel button is pressed.

    **SSH key is copied successfully** message is shown even cancel button is pressed.

    Describe the bug

    SSH key is copied successfully message is shown even cancel button is pressed.

    To Reproduce Steps to reproduce the behavior:

    1. Open redial
    2. Press F3 on any session
    3. Press cancel
    4. Connect to session
    5. Exit from session
    6. SSH key is copied successfully is shown

    Expected behavior

    There should be no 6th step.

    bug 
    opened by fatihbaltaci 0
  • Feature/copy ssh key

    Feature/copy ssh key

    Description

    Motivation and Context

    How Has This Been Tested?

    Screenshots (if appropriate):

    Types of changes

    • [ ] Bug fix (non-breaking change which fixes an issue)
    • [ ] New feature (non-breaking change which adds functionality)
    • [ ] Breaking change (fix or feature that would cause existing functionality to change)

    Checklist:

    • [ ] My code follows the code style of this project.
    • [ ] My change requires a change to the documentation.
    • [ ] I have updated the documentation accordingly.
    • [ ] I have read the CONTRIBUTING document.
    • [ ] I have added tests to cover my changes.
    • [ ] All new and existing tests passed.
    opened by fatihbaltaci 0
  • Add (F7) gives error when saving with blank fields

    Add (F7) gives error when saving with blank fields

    Traceback (most recent call last):
      File "/home/fatih/.local/bin/redial", line 11, in <module>
        load_entry_point('redial', 'console_scripts', 'redial')()
      File "/home/fatih/Desktop/git/redial/src/redial/__main__.py", line 7, in main
        sys.exit(run())
      File "/home/fatih/Desktop/git/redial/src/redial/redial.py", line 206, in run
        State.config = Config()
      File "/home/fatih/Desktop/git/redial/src/redial/config.py", line 10, in __init__
        self.load_from_file()
      File "/home/fatih/Desktop/git/redial/src/redial/config.py", line 23, in load_from_file
        value = kv[1]
    IndexError: list index out of range
    
    
    opened by fatihbaltaci 0
  • ForwardAgent support

    ForwardAgent support

    Is your feature request related to a problem? Please describe. It would be nice if this application provided an easy way to manage ssh-agent forwarding as a config parameter. I have several distributed systems that I use redial to manage. Specifically for cloning private git repositories to those remote machines. Some of them I would like ssh-agent forwarding and some not.

    Describe the solution you'd like I would like a checkbox in the edit connection window that when checked will enable ssh-agent forwarding. Upon initiating the connection redial will verify that agent forwarding has worked properly, if not a warning will appear saying it has been disabled either by the client or the server.

    Describe alternatives you've considered

    • manually adding forwardAgent yes to ssh config file, but it seems redial manages its own config file in .config/redial/sessions
    • Adding -A to IP parameter in edit connection pane. This still requires you to manage ssh-agent load and unload.

    Additional context The reason I'm using ssh-agent forwarding is because github only allows a single deploy key to be in use per machine. So with the end of password-based authentication you can no longer simply clone multiple private repositories to a remote machine.

    opened by airfield20 0
  • Collapsible folders

    Collapsible folders

    Is your feature request related to a problem? Please describe. The problem is when you start scaling this out for large quantities of servers (if you look after Bamboo \ Jenkins infra, this can happen). It can get a bit silly with the amount of scrolling to do.

    Describe the solution you'd like To have it so the folders can be automatically collapsed on start, and using the right have arrow (or clicking on the folder) expand it.

    opened by AlistairHardy 0
  • ciphers and kexalgorithms parameters in sessions config files not working

    ciphers and kexalgorithms parameters in sessions config files not working

    Describe the bug ciphers and kexalgorithms ssh parameters specified in the sessions configuration file are not parsed and passed wen connecting to the profile host.

    To Reproduce Steps to reproduce the behavior:

    1. edit the .config/redial/sessions file
    2. add some ssh profile parameters like ciphers 3des-cbc kexalgorithms +diffie-hellman-group1-sha1
    3. save session file
    4. start redial, select the profile and press enter to start the ssh session

    Expected behavior ssh session to the host profile with the correct ssh parameters is started

    Result console output : Unable to negotiate with HOST port 22: no matching key exchange method found. Their offer: diffie-hellman-group1-sha1

    • OS: kali-linux

    After the redial edit action, the profile ssh parameters disappear on the session configuration file.

    thank you

    enhancement 
    opened by epopower 2
  • Return to redial after exit ssh session

    Return to redial after exit ssh session

    Would it be possible to have redial launch again after you have exited your ssh session? You already have a state file so it would be pretty nice to return to where you left last time. I think this is a pretty expected behaviour when you work at scale.

    Thanks :)

    opened by telefax 2
  • SSH Bastion Support

    SSH Bastion Support

    In my environment there are lots of servers behind a bastion hosts. It would be great if we could have a field where you supply bastion host information. Either on each connection or folder.

    Also, it would be good enough if you could supply raw ssh options anyway :)

    In more recent SSH version this is accomplished by using "-J" flag on ssh:

    -J destination Connect to the target host by first making a ssh connection to the jump host described by destination and then establishing a TCP forwarding to the ultimate destination from there. Multiple jump hops may be specified separated by comma characters. This is a shortcut to specify a ProxyJump configuration directive.

    Thanks!

    enhancement 
    opened by telefax 1
  • Custom .config/redial/sessions seems overwrite even valid ssh config statements

    Custom .config/redial/sessions seems overwrite even valid ssh config statements

    I use fish instead of bash on many servers and connect using ssh -t [email protected]_server fish -l

    I'm trying to achieve the same thing with redial to group my servers, but i't doesn't work. I tried adding next lines to .config/redial/sessions

    RequestTTY force
    RemoteCommand fish -l
    

    Althought it seems to clear my lines when i even enter F9(Edit) and press Cancel.

    Tried on different servers, terminals. When using standart ssh config file - I can successfully login with ssh host_in_ssh_config So I think that the problem place is redial

    enhancement 
    opened by ank-everstake 1
Releases(0.8)
Owner
Bahadır Yağan
Bahadır Yağan
Command-line tool to use LNURL with your LND instance

Sprint planner Sprint planner is a Python script for planning your Jira tasks based on your calendar availability. Installation Use the package manage

Djuri Baars 6 Jan 14, 2022
Tstock - Check stocks from the terminal

tstock - Check stocks from the terminal! 📈 tstock is a tool to easily generate stock charts from the command line. Just type tstock aapl to get a 3 m

Gabe Banks 502 Dec 30, 2022
term2048 is a terminal-based version of 2048.

term2048 is a terminal-based version of 2048.

Baptiste Fontaine 798 Nov 21, 2022
A Python package for Misty II development

Misty2py Misty2py is a Python 3 package for Misty II development using Misty's REST API. Read the full documentation here! Installation Poetry To inst

Chris Scarred 1 Mar 07, 2022
Command-line tool for looking up colors and palettes.

Colorpedia Colorpedia is a command-line tool for looking up colors, shades and palettes. Supported color models: HEX, RGB, HSL, HSV, CMYK. Requirement

Joohwan Oh 282 Dec 27, 2022
alternative cli util for update-alternatives

altb altb is a cli utility influenced by update-alternatives of ubuntu. Linked paths are added to $HOME/.local/bin according to XDG Base Directory Spe

Elran Shefer 8 Dec 07, 2022
Message commands extension for discord-py-interactions

interactions-message-commands Message commands extension for discord-py-interactions README IS NOT FINISHED YET BUT IT IS A GOOD START Installation pi

2 Aug 04, 2022
A simple terminal-based localhost chat application written in python

Chat House A simple terminal-based localhost chat application written in python How to Use? Clone the repo git clone https://github.com/heksadecimal/c

Heks 10 Nov 09, 2021
GDBIGtools: A command line tools for GDBIG varaints browser

GDBIGtools: A command line tools for GDBIG varaints browser Introduction Born in Guangzhou Cohort Study Genome Research Database is based on thousands

广州市出生队列基因组学研究(The genomics study of BIGCS) 7 Sep 14, 2022
Tablicate - Python library for easy table creation and output to terminal

Tablicate Tablicate - Python library for easy table creation and output to terminal Features Column-wise justification alignment (left, right, center)

3 Dec 14, 2022
A simple CLI application helps you to find giant files that are eating up your system storage

Large file finder Sometimes it's very hard to find if some giant files are eating up your system storage. We might need to hunt those down. This simpl

Rahul Baruri 5 Nov 18, 2022
spotifytools is a Python command line tool

spotifytools spotifytools is a Python command line tool Documentation The documentation is available on the following link Releases Instalation instru

0 Sep 28, 2021
Pyrdle - Play Wordle in the CLI. Write an algorithm to play Wordle for you. Ruin all of the fun you've been having

Pyrdle - Play Wordle in the CLI. Write an algorithm to play Wordle for you. Ruin all of the fun you've been having

Charles Tapley Hoyt 11 Feb 11, 2022
Ideas on how to quickly learn to build command-line tools

CLI-Bootcamp Ideas on how to quickly learn to build command-line tools Part 1-Bash Week1: Using Linux Lesson 1: Using Linux Shell Lab Lesson 2: How sh

Noah Gift 10 Apr 18, 2022
MasterDuel Image Recognition Translation Command Line Tool

MasterDuelTranslate(Use Ygo Card DataBase,belong win32 window shot & image match)

PatchouliTC 77 Dec 01, 2022
grungegirl is the hacker's drug encyclopedia. programmed in python for maximum modularity and ease of configuration.

grungegirl. cli-based drug search for girls. welcome. grungegirl is aiming to be the premier drug culture application. it is the hacker's encyclopedia

Eristava 10 Oct 02, 2022
A linux-like remote terminal for Micropython

A linux-like remote terminal for Micropython

Christian Köver - Draxl 2 Nov 14, 2021
Tiny command-line utility for mapping broken keys to other positions.

brokenkey Tiny command-line utility for mapping broken keys to other positions. Installation Clone this repository using git: git clone https://github

0 Oct 04, 2021
A simple script to make the operation of AltServer-Linux more easier with cli

A simple script to make the operation of AltServer-Linux more easier with cli

powen 23 Dec 13, 2022
⌨ Toward a more useful keyboard

Toward a more useful keyboard Steve Losh's Modern Space Cadet is an inspiration. It opened my eyes to the fact that there's a more useful keyboard hid

Jason Rudolph 1.7k Jan 01, 2023