diff options
author | imilo <alexoy.v@gmail.com> | 2016-12-21 10:46:54 +0200 |
---|---|---|
committer | 无闻 <u@gogs.io> | 2016-12-21 03:46:54 -0500 |
commit | 85fbd6e9c6e90ea998719d0d40ddfb71affd9a05 (patch) | |
tree | 7e446e4b8953393bde4e7d960eb78bc558e16953 | |
parent | 2cfdce88e0b66bc6d6a52507ab682be76289aa6f (diff) |
New settings option for a custom SSH host (#3763)
-rw-r--r-- | conf/app.ini | 2 | ||||
-rw-r--r-- | modules/setting/setting.go | 1 | ||||
-rw-r--r-- | modules/ssh/ssh.go | 10 | ||||
-rw-r--r-- | routers/install.go | 4 |
4 files changed, 10 insertions, 7 deletions
diff --git a/conf/app.ini b/conf/app.ini index 23961c95..b4e988c0 100644 --- a/conf/app.ini +++ b/conf/app.ini @@ -101,6 +101,8 @@ DISABLE_SSH = false START_SSH_SERVER = false ; Domain name to be exposed in clone URL SSH_DOMAIN = %(DOMAIN)s +; Network interface builtin SSH server listens on +SSH_LISTEN_HOST = 0.0.0.0 ; Port number to be exposed in clone URL SSH_PORT = 22 ; Port number builtin SSH server listens on diff --git a/modules/setting/setting.go b/modules/setting/setting.go index 581d4137..8ef8cef4 100644 --- a/modules/setting/setting.go +++ b/modules/setting/setting.go @@ -78,6 +78,7 @@ var ( StartBuiltinServer bool `ini:"START_SSH_SERVER"` Domain string `ini:"SSH_DOMAIN"` Port int `ini:"SSH_PORT"` + ListenHost string `ini:"SSH_LISTEN_HOST"` ListenPort int `ini:"SSH_LISTEN_PORT"` RootPath string `ini:"SSH_ROOT_PATH"` KeyTestPath string `ini:"SSH_KEY_TEST_PATH"` diff --git a/modules/ssh/ssh.go b/modules/ssh/ssh.go index ceecc9bb..06710483 100644 --- a/modules/ssh/ssh.go +++ b/modules/ssh/ssh.go @@ -110,10 +110,10 @@ func handleServerConn(keyID string, chans <-chan ssh.NewChannel) { } } -func listen(config *ssh.ServerConfig, port int) { - listener, err := net.Listen("tcp", "0.0.0.0:"+com.ToStr(port)) +func listen(config *ssh.ServerConfig, host string, port int) { + listener, err := net.Listen("tcp", host+":"+com.ToStr(port)) if err != nil { - panic(err) + log.Fatal(4, "Fail to start SSH server: %v", err) } for { // Once a ServerConfig has been configured, connections can be accepted. @@ -148,7 +148,7 @@ func listen(config *ssh.ServerConfig, port int) { } // Listen starts a SSH server listens on given port. -func Listen(port int) { +func Listen(host string, port int) { config := &ssh.ServerConfig{ PublicKeyCallback: func(conn ssh.ConnMetadata, key ssh.PublicKey) (*ssh.Permissions, error) { pkey, err := models.SearchPublicKeyByContent(strings.TrimSpace(string(ssh.MarshalAuthorizedKey(key)))) @@ -180,5 +180,5 @@ func Listen(port int) { } config.AddHostKey(private) - go listen(config, port) + go listen(config, host, port) } diff --git a/routers/install.go b/routers/install.go index e71424c6..0c621e28 100644 --- a/routers/install.go +++ b/routers/install.go @@ -92,8 +92,8 @@ func GlobalInit() { checkRunMode() if setting.InstallLock && setting.SSH.StartBuiltinServer { - ssh.Listen(setting.SSH.ListenPort) - log.Info("SSH server started on :%v", setting.SSH.ListenPort) + ssh.Listen(setting.SSH.ListenHost, setting.SSH.ListenPort) + log.Info("SSH server started on %s:%v", setting.SSH.ListenHost, setting.SSH.ListenPort) } } |