new ProcessBuilder("ssh b15h278@my.host.com \"echo success\"").start();
我得到了成功"。但如果我将代码部署为战争,它将给我"权限被拒绝(公钥)。"。我已在目标主机中注册了密钥。
答案 0 :(得分:1)
要建立有效的SSH连接,您需要在要尝试登录的系统上使用公钥,并在本地系统上使用私钥。默认情况下," ssh"命令将在" $ HOME / .ssh"
中查找私钥我怀疑这里的问题是当你运行" ssh"从webapp,你实际上是作为一个不同的用户运行(例如" tomcat"),而$HOME
指的是没有" .ssh"的目录。子目录。
尝试给出" ssh"一个明确的" -i"具有私钥文件的(绝对)路径的参数。另外,确保文件可以被" tomcat"用户(或其他任何东西)。 (通常的做法是在" $ HOME / .ssh"目录上设置权限,以便其他用户/组无法读取它。)