Merge pull request #1020 from P1tt187/sshd-RSA-keyprovider

update sshd dependency, rsa keyprovider as default
This commit is contained in:
Naoki Takezoe
2015-12-26 16:59:30 +09:00
4 changed files with 23 additions and 14 deletions

View File

@@ -1,14 +1,14 @@
import sbt._
import Keys._
import play.twirl.sbt.SbtTwirl
import com.earldouglas.xwp.JettyPlugin import com.earldouglas.xwp.JettyPlugin
import sbtassembly._ import play.twirl.sbt.SbtTwirl
import sbt.Keys._
import sbt._
import sbtassembly.AssemblyKeys._ import sbtassembly.AssemblyKeys._
import sbtassembly._
object MyBuild extends Build { object MyBuild extends Build {
val Organization = "gitbucket" val Organization = "gitbucket"
val Name = "gitbucket" val Name = "gitbucket"
val Version = "3.9.0" val Version = "3.9.1"
val ScalaVersion = "2.11.6" val ScalaVersion = "2.11.6"
val ScalatraVersion = "2.3.1" val ScalatraVersion = "2.3.1"
@@ -53,7 +53,7 @@ object MyBuild extends Build {
"org.apache.commons" % "commons-compress" % "1.9", "org.apache.commons" % "commons-compress" % "1.9",
"org.apache.commons" % "commons-email" % "1.3.3", "org.apache.commons" % "commons-email" % "1.3.3",
"org.apache.httpcomponents" % "httpclient" % "4.3.6", "org.apache.httpcomponents" % "httpclient" % "4.3.6",
"org.apache.sshd" % "apache-sshd" % "0.11.0", "org.apache.sshd" % "apache-sshd" % "1.0.0",
"org.apache.tika" % "tika-core" % "1.10", "org.apache.tika" % "tika-core" % "1.10",
"com.typesafe.slick" %% "slick" % "2.1.0", "com.typesafe.slick" %% "slick" % "2.1.0",
"com.novell.ldap" % "jldap" % "2009-10-07", "com.novell.ldap" % "jldap" % "2009-10-07",

View File

@@ -1,10 +1,11 @@
package gitbucket.core.ssh package gitbucket.core.ssh
import java.security.PublicKey
import gitbucket.core.service.SshKeyService import gitbucket.core.service.SshKeyService
import gitbucket.core.servlet.Database import gitbucket.core.servlet.Database
import org.apache.sshd.server.PublickeyAuthenticator import org.apache.sshd.server.auth.pubkey.PublickeyAuthenticator
import org.apache.sshd.server.session.ServerSession import org.apache.sshd.server.session.ServerSession
import java.security.PublicKey
class PublicKeyAuthenticator extends PublickeyAuthenticator with SshKeyService { class PublicKeyAuthenticator extends PublickeyAuthenticator with SshKeyService {

View File

@@ -1,20 +1,25 @@
package gitbucket.core.ssh package gitbucket.core.ssh
import java.io.File
import java.util.concurrent.atomic.AtomicBoolean
import javax.servlet.{ServletContextEvent, ServletContextListener} import javax.servlet.{ServletContextEvent, ServletContextListener}
import gitbucket.core.service.SystemSettingsService import gitbucket.core.service.SystemSettingsService
import gitbucket.core.util.Directory import gitbucket.core.util.Directory
import org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider import org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
import java.util.concurrent.atomic.AtomicBoolean
object SshServer { object SshServer {
private val logger = LoggerFactory.getLogger(SshServer.getClass) private val logger = LoggerFactory.getLogger(SshServer.getClass)
private val server = org.apache.sshd.SshServer.setUpDefaultServer() private val server = org.apache.sshd.server.SshServer.setUpDefaultServer()
private val active = new AtomicBoolean(false) private val active = new AtomicBoolean(false)
private def configure(port: Int, baseUrl: String) = { private def configure(port: Int, baseUrl: String) = {
server.setPort(port) server.setPort(port)
server.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(s"${Directory.GitBucketHome}/gitbucket.ser", "RSA")) val provider = new SimpleGeneratorHostKeyProvider(new File(s"${Directory.GitBucketHome}/gitbucket.ser"))
provider.setAlgorithm("RSA")
provider.setOverwriteAllowed(false)
server.setKeyPairProvider(provider)
server.setPublickeyAuthenticator(new PublicKeyAuthenticator) server.setPublickeyAuthenticator(new PublicKeyAuthenticator)
server.setCommandFactory(new GitCommandFactory(baseUrl)) server.setCommandFactory(new GitCommandFactory(baseUrl))
server.setShellFactory(new NoShell) server.setShellFactory(new NoShell)

View File

@@ -1,10 +1,13 @@
package gitbucket.core.ssh package gitbucket.core.ssh
import java.security.PublicKey import java.security.PublicKey
import org.slf4j.LoggerFactory
import org.apache.commons.codec.binary.Base64 import org.apache.commons.codec.binary.Base64
import org.apache.sshd.common.config.keys.KeyUtils
import org.apache.sshd.common.util.buffer.ByteArrayBuffer
import org.eclipse.jgit.lib.Constants import org.eclipse.jgit.lib.Constants
import org.apache.sshd.common.util.{KeyUtils, Buffer} import org.slf4j.LoggerFactory
object SshUtil { object SshUtil {
@@ -20,7 +23,7 @@ object SshUtil {
try { try {
val encodedKey = parts(1) val encodedKey = parts(1)
val decode = Base64.decodeBase64(Constants.encodeASCII(encodedKey)) val decode = Base64.decodeBase64(Constants.encodeASCII(encodedKey))
Some(new Buffer(decode).getRawPublicKey) Some(new ByteArrayBuffer(decode).getRawPublicKey)
} catch { } catch {
case e: Throwable => case e: Throwable =>
logger.debug(e.getMessage, e) logger.debug(e.getMessage, e)