diff --git a/synapse/app/homeserver.py b/synapse/app/homeserver.py
index 2d85970773..14ce9cd800 100755
--- a/synapse/app/homeserver.py
+++ b/synapse/app/homeserver.py
@@ -42,6 +42,12 @@ from synapse.storage.prepare_database import UpgradeDatabaseException
from synapse.server import HomeServer
+from twisted.conch.manhole import ColoredManhole
+from twisted.conch.insults import insults
+from twisted.conch import manhole_ssh
+from twisted.cred import checkers, portal
+
+
from twisted.internet import reactor, task, defer
from twisted.application import service
from twisted.enterprise import adbapi
@@ -67,7 +73,6 @@ from synapse.metrics.resource import MetricsResource, METRICS_PREFIX
from synapse import events
from daemonize import Daemonize
-import twisted.manhole.telnet
import synapse
@@ -249,10 +254,21 @@ class SynapseHomeServer(HomeServer):
if listener["type"] == "http":
self._listener_http(config, listener)
elif listener["type"] == "manhole":
- f = twisted.manhole.telnet.ShellFactory()
- f.username = "matrix"
- f.password = "rabbithole"
- f.namespace['hs'] = self
+ checker = checkers.InMemoryUsernamePasswordDatabaseDontUse(
+ matrix="rabbithole"
+ )
+
+ rlm = manhole_ssh.TerminalRealm()
+ rlm.chainedProtocolFactory = lambda: insults.ServerProtocol(
+ ColoredManhole,
+ {
+ "__name__": "__console__",
+ "hs": self,
+ }
+ )
+
+ f = manhole_ssh.ConchFactory(portal.Portal(rlm, [checker]))
+
reactor.listenTCP(
listener["port"],
f,
diff --git a/synapse/config/server.py b/synapse/config/server.py
index 3d6fc5f460..df4707e1d1 100644
--- a/synapse/config/server.py
+++ b/synapse/config/server.py
@@ -200,7 +200,7 @@ class ServerConfig(Config):
- names: [federation]
compress: false
- # Turn on the twisted telnet manhole service on localhost on the given
+ # Turn on the twisted ssh manhole service on localhost on the given
# port.
# - port: 9000
# bind_address: 127.0.0.1
|