From d748e2ae53abe76b077a5158857f91f871090260 Mon Sep 17 00:00:00 2001 From: Mike Peralta Date: Sun, 27 May 2018 03:45:02 -0700 Subject: [PATCH] Update README.md --- README.md | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index b3b5d7c..a88fd1a 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ You can also try using this script with a different daemon (or your own custom s 6. Repeat steps 2-5 for each additional user who would like connection based ssh configuration files. -## Example Scenario +## Example Scenarios Why would you use this script? Suppose the following scenarios: @@ -49,3 +49,38 @@ Why would you use this script? Suppose the following scenarios: * You have several servers which you can connect directly to from work. Your work has no VPN, so when at home, these servers aren't exactly online; You must first connect to a gateway server on your employer's network, then use that gateway server as a proxy to reach the other internal servers. This is generally called Transparent Multihop over SSH ([example](http://sshmenu.sourceforge.net/articles/transparent-mulithop.html)). Thus, it would really be convenient to have one ssh configuration file for home, and one for work. +Each of these scenarios can be solved by the connection-specific-ssh-config script. Simply create as many ssh configuration files as you need, and each can be dynamically symlinked as you connec to different networks. + +## Configuration File +Configuration files for connection-specific-ssh-config are just standard python/php style ini files, and are relatively simple: + +* You need a section called "config", which currently only holds one variable: + * *ssh_dir*, which specifies the directory your ssh client looks for configuration files (typically *~/.ssh/*) +* You then need one or more sections which specify targets that associate ssh configuration files with network connection names + * The key *ssh__config_name* specifies the name of the ssh configuration file that should apply if this target activates +* You can then optionally add a "default" section, which specifies which default ssh configuration file to fallback to, if any + +Here's an example configuration file to help you get started: + +``` + +[config] +ssh_dir = /home/mike/.ssh + +[default] +adapter = wlan0 +ssh_config_name = config-default + +[Wifi Work] +adapters = ["wlan0", "wlan1"] +ssids = ["Work Connection - Main Office", "Work Connection - Garys Office"] +ssh_config_name = config-work + +[Wifi Home] +adapter = wlan0 +ssid = My Home Connection (Oh Joy) +ssh_config_name = config-home + +``` + +The above configuration file will instruct the script to use the ssh configuration file */home/mike/.ssh/config-work* while you're connected to one of your work connections *Work Connection - Main Office* or *Work Connection - Garys Office*, on either of your wireless adapters *wlan0* or *wlan1*. When you get home and connect to your *My Home Connection (Oh Joy)* connection on *wlan0*, the config file */home/mike/.ssh/config-home* will be used instead. Finally, the configuration file */home/mike/.ssh/config-default* will be used when *wlan0* connects to some undefined network.