openziti / ziti

The parent project for OpenZiti. Here you will find the executables for a fully zero trust, application embedded, programmable network @OpenZiti
https://openziti.io
Apache License 2.0
2.71k stars 153 forks source link

Add experimental SSH management tool #2439

Open plorenz opened 3 days ago

plorenz commented 3 days ago

Allow SSH to controllers and routers over the mgmt and control channels.

Note: Both the enabled and enableExperimentalFeature flags must be set to true.

Using a local ssh server. If dialing a local service, the format must be 127.0.0.1:<port>. No external IP or hostname may be used.

mgmt:
  pipe:
    enabled: true
    enableExperimentalFeature: true
    destination: 127.0.0.1:22

If there's no ssh server running, an embedded ssh server may be used.

mgmt:
  pipe:
    enabled: true
    enableExperimentalFeature: true
    destination: embedded-ssh-server
    authorizedKeysFile: /home/plorenz/tmp/authorized_keys # optional, will default to $HOME/.ssh/authorized_keys
    shell: /usr/bin/bash # optional, will default to `/bin/sh`

If you want to enable the feature, but don't want ssh access enabled on the controller itself, don't specify a destination.

Example:

mgmt:
  pipe:
    enabled: true
    enableExperimentalFeature: true

The feature must be enabled on each controller and router you want to access. Because access to routers is through a controller, the feature must be enabled on both the controller and the router, though as noted above, ssh access to the controller itself is not necessary.

Example use:

emoscardini commented 2 days ago

@plorenz For the question

Should it be 127.0.0.1 instead of localhost?

IMO, I would go with 127.0.0.1 instead of localhost. The localhost is still a resolvable name & therefore can be redirected to something other than 127.0.0.1.