aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorimilo <alexoy.v@gmail.com>2016-12-21 10:46:54 +0200
committer无闻 <u@gogs.io>2016-12-21 03:46:54 -0500
commit85fbd6e9c6e90ea998719d0d40ddfb71affd9a05 (patch)
tree7e446e4b8953393bde4e7d960eb78bc558e16953
parent2cfdce88e0b66bc6d6a52507ab682be76289aa6f (diff)
New settings option for a custom SSH host (#3763)
-rw-r--r--conf/app.ini2
-rw-r--r--modules/setting/setting.go1
-rw-r--r--modules/ssh/ssh.go10
-rw-r--r--routers/install.go4
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)
}
}