summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorBrad Fitzpatrick <bradfitz@tailscale.com>2024-10-17 08:46:41 -0700
committerBrad Fitzpatrick <bradfitz@tailscale.com>2024-10-17 08:46:41 -0700
commit5291af01bc174f15c6d3bf8ebe8dd6913f62a906 (patch)
tree59e70d0b1683ecf2752b5a6231bc523358438bb0
parent22c89fcb19ea36159e232c45b4f5e91c73b9e486 (diff)
downloadtailscale-bradfitz/ssh_config_from_env.tar.xz
tailscale-bradfitz/ssh_config_from_env.zip
ssh/tailssh: allow setting some Tailscale SSH config from env varsbradfitz/ssh_config_from_env
DO NOT SUBMIT; Draft. Just an example. Change-Id: I46f74e2a1dfeabae70416200cb996857d4dc6144 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
-rw-r--r--ssh/tailssh/tailssh.go11
1 files changed, 10 insertions, 1 deletions
diff --git a/ssh/tailssh/tailssh.go b/ssh/tailssh/tailssh.go
index 9ade1847e..9452551dc 100644
--- a/ssh/tailssh/tailssh.go
+++ b/ssh/tailssh/tailssh.go
@@ -423,10 +423,19 @@ func (c *conn) doPolicyAuth(ctx ssh.Context, pubKey ssh.PublicKey) error {
// ServerConfig implements ssh.ServerConfigCallback.
func (c *conn) ServerConfig(ctx ssh.Context) *gossh.ServerConfig {
- return &gossh.ServerConfig{
+ sc := &gossh.ServerConfig{
NoClientAuth: true, // required for the NoClientAuthCallback to run
NextAuthMethodCallback: c.nextAuthMethodCallback,
}
+ ssFromEnv := func(dst *[]string, envKey string) {
+ if v := os.Getenv(envKey); v != "" {
+ *dst = strings.Split(v, ",")
+ }
+ }
+ ssFromEnv(&sc.KeyExchanges, "TS_SSH_KEY_EXCHANGE_ALGS")
+ ssFromEnv(&sc.Ciphers, "TS_SSH_CIPHERS")
+ ssFromEnv(&sc.MACs, "TS_SSH_MACS")
+ return sc
}
func (srv *server) newConn() (*conn, error) {