我意识到这个问题(或类似的问题)在其他地方被问过,但解决方案对我来说不起作用。我正在尝试使用菊石在本地的 scala/java 项目中,使用以下命令启动 SSH 服务器
import ammonite.sshd._
import org.apache.sshd.server.auth.password.{AcceptAllPasswordAuthenticator, StaticPasswordAuthenticator}
val replServer = new SshdRepl(
SshServerConfig(
address = "localhost", // or "0.0.0.0" for public-facing shells
port = 22222, // Any available port
passwordAuthenticator = Some(AcceptAllPasswordAuthenticator.INSTANCE)
)
)
replServer.start()
然后我就可以连接并进行身份验证ssh jbennett@localhost -p22222
(或任何用户名,这似乎无关紧要,但我在其他地方读到使用没有主文件夹的用户可能会导致问题,所以我使用现有的用户名)。问题是身份验证后连接立即关闭。以下是输出ssh jbennett@localhost -p22222 -vvvv
:https://pastebin.com/DAZyxnBH
我查看了一下/etc/ssh/sshd_config
,发现所有内容基本都是默认设置。我尝试按照另一个建议进行更改internal-sftp
,但没有什么效果。
#old line:
#Subsystem sftp /usr/libexec/sftp-server
#new line:
Subsystem sftp internal-sftp
完整文件在这里:https://pastebin.com/0FcivDVf并且包含行的文件内容只是
# Options set by macOS that differ from the OpenSSH defaults.
UsePAM yes
AcceptEnv LANG LC_*
Subsystem sftp /usr/libexec/sftp-server
不确定这对于这个用例是否重要,因为 SSH 连接连接到 REPL 而不是 shell,但我的登录 shell 对用户来说启动正常jbennett
,所以它似乎也不是 shell 配置文件的问题。
如果您对如何解决此问题有任何想法,请告诉我!