我正在执行此命令作为su
.我已经与(使用 sshNet)建立了连接SSH
,然后当我尝试设置命令时su -
,我没有得到任何响应。我有密码和我想在登录后执行的命令su
。
我的代码,我知道是错误的,现在看起来像这样:
using (var sshClient = new SshClient("10.10.8.113","ems", "ems"))
{
sshClient.Connect();
sshClient.CreateCommand("su -").Execute();
sshClient.CreateCommand("123456").Execute();
sshClient.CreateCommand("EmsMenu.sh");
}
我读到了有关使用 Shell 实施的内容,但我没有以这种方式取得成功。
答案1
失败的原因是,默认情况下,不会在目标计算机上ssh
创建终端 (a )。pty
这意味着su
无法提示输入密码,因此失败。 (sudo
出于同样的原因,也将无法提示,除非给出标志-S
- 正如 @Scott 所指出的。)
您可以告诉在远程系统上
ssh
创建一个终端 ( ),以便提示输入密码。使用普通命令,您可以通过向 ssh 提供标志来完成此操作。不幸的是,我无法为您提供任何有关执行此操作的方法的帮助pty
su
-t
SSH.NET因为它的文档是以CHM格式提供的,我无法打开。su
您可以通过使用所需的目标用户帐户“root”连接到远程服务器来完全删除该部分。出于安全原因,这可能会在某些拒绝尝试使用密码的 root 登录的系统上失败,因此您可能需要研究基于证书的登录。可以使用命令生成合适的证书ssh-keygen -t rsa
。
答案2
sudo
是否可以在要执行的命令之前使用?喜欢而不是:
su
whatever command
做:
sudo whatever command