Site Tools


router_to_router_ssh

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
router_to_router_ssh [2023/05/23 15:23] – -condense, clarity, formatting hogwildrouter_to_router_ssh [2023/05/23 18:06] – [Overview] -added subhead "Setting up/Eablishing a tunnel" hogwild
Line 3: Line 3:
 ===== Overview ===== ===== Overview =====
  
-FreshTomato includes [[https://matt.ucc.asn.au/dropbear/dropbear.html|Dropbear]], an SSH client/server program. Dropbear can generate an encryption KeyPair that offers password-less connections. A command is run on the primary router which generates a public key.  That Public Key must then be pasted into the secondary router’s //Authorized Keys //field, in the SSH Daemon section of the [[:admin_access|Admin Access]] menu.\\  \\ This setup allows a primary router, (the "SSH Client") to control a secondary router (the "SSH Host"), from the command-line.+This setup allows a primary router, (the "SSH Client") to control a secondary router (the "SSH Host"), from the command-line, through an encrypted (tunnel) connection.
  
-This can be useful, for example:+FreshTomato includes [[https://matt.ucc.asn.au/dropbear/dropbear.html|Dropbear]], an SSH client/server program. Dropbear can generate an encryption KeyPair that offers passwordless connections. A command is run on the primary router which generates a public key.  That Public Key must then be entered into the secondary router’s //Authorized Keys //field, in the SSH Daemon section of the [[:admin_access|Admin Access]] menu.\\  \\ This can be useful, for example:
  
-  * When the the secondary router system does not maintain its system clock, and time-sensitive jobs must be scheduled. +  * When the the secondary router system doesn'maintain system clock, and time-sensitive jobs must be scheduled. 
-  * For running scripts on the secondary router for any supported command+  * For running scripts on the secondary router using any supported commands
-  * As seen below, for switching wireless radio(s) on or off to a schedule (not shown).+  * As seen below, for switching wireless radio(s) on or off on a schedule (not shown).
  
-  - On the primary router (the one issuing SSH commands) type the command: \\ **dropbearkey -t rsa -f ~/.ssh/id_dropbear** command to generate the KeyPair. \\ This will display result similar to that shown below. Leave this window open. \\ You will need it for step 2.+=====  Setting up/Establishing Tunnel =====
  
-\\ {{:pasted:20210921-152323.png}}+Follow these steps to generate a Keypair and establish an SSH tunnel:
  
-\\  \\+  - On the primary router (the one issuing SSH commands) generate a Keypair by typing the command: \\ "dropbearkey -t rsa -f ~/.ssh/id_dropbear" \\ \\ This will display a result similar to that shown below. Leave this window open, as you'll need it for step 2. \\ \\ {{:pasted:20210921-152323.png?744}} \\ \\  
 +  - Copy the Public key portion from the primary router and paste it into the “Authorized Keys” field in secondary router: \\ \\ {{:pasted:20210921-152415.png?739}} \\ \\  
 +  - In the above screenshot, a pre-existing, unrelated key was redacted. \\ \\  
 +  - Now, connect to the secondary router via an SSH session (running on the primary router).  \\ The example below uses the //nvram// command to display the hostname. \\ The first command string ("ssh root@192.168.10.1 nvram get lan_hostname")** **executes the command on the secondary router and then it [nvram get lan_hostname] is executed locally, on the primary router. \\ \\ \\ {{:pasted:20210921-152503.png?741}}
  
-  - Copy and paste the Public key portion from the primary router \\ to the secondary router’s “Authorized Keys” field, as seen below:+ \\
  
-\\ {{:pasted:20210921-152415.png}}+ \\
  
-Note that a pre-existing, and unrelated key is redacted above.  \\  \\  \\ 
  
-  - Now, connect to the secondary router from within an SSH session (running on the primary router). The example below uses the **nvram** command to display the host name. The first command string (**ssh root@192.168.10.1 nvram get lan_hostname) **executes the command on the secondary router and then it [nvram get lan_hostname] is executed locally, on the primary router.+===== Usage Example =====
  
-\\ {{:pasted:20210921-152503.png}}+This example will enable/disable the eth1 5Ghz WiFi interface on the secondary router. (Temperature is shown only when the interface is enabled).  \\  \\
  
-==== Example ==== +  - This screenshot shows the status display of the Primary router before before the command is run: \\ \\ {{:pasted:20210921-152542.png?736}} \\ \\  
- +  - Now, we run the command (//ssh root@192.168.10.1 radio toggle 1//): \\ \\ {{:pasted:20210921-152607.png?744}} \\ \\  
-This example will enable/disable the eth1 5Ghz Wi-Fi interface on the secondary router. (Temperature is shown only when the interface is on) \\  \\ +  - This shows the status display after the command is run: \\ \\ {{:pasted:20210921-152637.png?761}} \\  \\ Since "radio toggle 1" is  a toggle switch, if the same command is repeated, the eth1 interface will be disabled on the primary router.
- +
-  - This shows the status display before ([Primary router) the command is run:\\ {{:pasted:20210921-152542.png}}+
  
 \\ \\
  
-  - Here, the command (**ssh root@192.168.10.1 radio toggle 1**) executed:\\ {{:pasted:20210921-152607.png}} + \\
- +
-  - And here is the status display after the command is run.+
  
-{{:pasted:20210921-152637.png}} \\  \\ If the same command is repeated, the eth1 interface will be disabled on the primary router. 
  
 ===== Notes ===== ===== Notes =====
  
-  * SSH must be enabled on both routers. +  * The SSH daemon must be enabled on both routers. 
-  * The key generated will be erased after a reboot of the primary router. Either keep a copy of the "id_dropbear" file offline (on a flash drive, or CIFS Client share) for restoration, or be prepared to repeat the procedure (HOWTO steps 1 and 2) after a reboot, removing any redundant key from the secondary router during the process.+  * The key generated will be erased after a reboot of the Primary router. 
 +    * Either keep a copy of the "id_dropbear" file offline (on a flash drive, or CIFS Client share) for restoration, or
 +    * Be prepared to repeat (steps 1and 2.) after a reboot, removing any redundant key from the secondary router.
   * This guide was produced using [[https://www.chiark.greenend.org.uk/~sgtatham/putty/|PuTTY]] v0.76 and FreshTomato release 2021.5.   * This guide was produced using [[https://www.chiark.greenend.org.uk/~sgtatham/putty/|PuTTY]] v0.76 and FreshTomato release 2021.5.
   * Inspiration was provided by [[https://blog.michael.franzl.name/2017/09/03/set-passwordless-ssh-login-dropbear-client/|this]] article.    * Inspiration was provided by [[https://blog.michael.franzl.name/2017/09/03/set-passwordless-ssh-login-dropbear-client/|this]] article. 
router_to_router_ssh.txt · Last modified: 2023/05/24 02:08 by hogwild