Code Monkey home page Code Monkey logo

sshconfig's Introduction

SSH Config โ€” SSH Adapts to Your Current Network

https://pepy.tech/badge/sshconfig/month
Author:Ken Kundert
Version:2.2.1
Released:2023-11-08

Installation

Requires Python3.6 or newer.

You can download and install the latest stable version of the code from PyPI using:

pip3 install --user sshconfig

You can find the latest development version of the source code on Github.

Introduction

SSH Config generates an SSH config file adapted to the network you are currently using. In this way, you always use the fastest paths available for your SSH related activities (sshfs, email, vnc, mercurial, etc.). You can also easily reconfigure SSH to make use of proxies as needed or select certain servers or ports based on your location or restrictions with the network.

The following situations are supported:

  1. You may give the mac address or addresses for your router or routers and your network will automatically be recognized.
  2. You can configure which hostname or IP address is used for a particular host depending on which network you are on. In this way you always use the fastest connection available for each host.
  3. You can specify that certain hosts are hidden behind other hosts, so that a SSH proxy should be used to access them.
  4. You can specify port forwarding information for each host. Then, two SSH configurations will be created for those hosts, one that includes port forwarding and one that does not. That way, once the port forwards are established, you can open additional shells on that host without SSH trying to create conflicting port forwards.
  5. You can enter multiple hostnames or IP addresses and give their locations. Then, if you specify your location, the closest server will be used automatically.
  6. You can specify proxy configurations and specify that one should be used for all hosts not on your current network.
  7. You can specify port restrictions and have SSH work around them if possible (if your server supports alternative ports).
  8. You can configure a default location, proxy, or set of port restrictions for each of your known networks.
  9. Once host names are defined, they do not change even though you are using different configurations (different networks, locations, proxies, and port restrictions). In this way you can hard code your host names in applications such as Mercurial or Git, and they automatically adapt to your existing network.
  10. The entire application, including the configuration files, are Python code, so you have considerable freedom to change the configuration based on things like the name of the machine or the user when generating the SSH config file.

Documentation

You can find documentation at ReadTheDocs.

Issues

Please ask questions or report problems on Github Issues.

Contributions

Contributions in the form of pull requests are welcome.

sshconfig's People

Contributors

kenkundert avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

sshconfig's Issues

Manage section of ssh config?

Hello,

This seems like a great tool and i am looking to automate managing .ssh/config. I am wondering if sshconfig can also manage a section in ssh config file instead of the entire file?

I imagine some sections will be added manually but I want to programmatically alter a few settings.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.