问题: sbt(Scala) 通过 SSH 导致找不到命令,但是如果我自己这样做的话会有效。
答案:
这个问题涉及到一个常见的 SSH 错误,即当从远程服务器连接时,命令无法在本地 shell 中找到。这通常是由于 SSH 客户端在与服务器建立连接时使用了不正确的 shell。
要解决这个问题,请确保在连接到远程服务器时使用正确的 shell。通常情况下,使用 ssh
命令时,应该使用 /bin/bash
作为 shell。在 Scala 中,您可以使用以下命令来确保正确的 shell 被使用:
import org.apache.sshd.server.session.Session
val session = Session.getDefaultInstance(System.getProperties, null)
val channel = session.openChannel("shell")
channel.connect(null)
在上面的代码中,我们使用 Session.getDefaultInstance()
方法创建一个 SSH 会话,然后使用 openChannel()
方法打开一个名为 "shell" 的通道。最后,我们使用 connect()
方法连接到该通道。
如果您使用的是其他 shell(例如 csh 或 tcsh),则需要在启动 SSH 会话时使用正确的 shell。您可以通过在 ssh
命令中添加 -t
选项来强制使用指定的 shell,例如:
ssh -t user@remote_host
这将确保在连接到远程服务器时使用正确的 shell。
总之,确保在连接到远程服务器时使用正确的 shell 是解决这个问题的关键。通过使用上述方法,您可以确保在 Scala 中使用 SSH 时使用正确的 shell。
领取专属 10元无门槛券
手把手带您无忧上云