Linux 通过ssh在远程服务器上执行命令不会';行不通

Linux 通过ssh在远程服务器上执行命令不会';行不通,linux,unix,ssh,Linux,Unix,Ssh,我正在尝试使用ssh在远程服务器上执行命令。命令如下 ssh machine -l user "ls" 这个命令被夹在中间,最后我们不得不暂停它 但是,执行命令ssh machine-l user工作正常,该命令使我们连接到远程机器 请有人帮助找出为什么远程服务器上的ls不能通过ssh工作的根本原因 编辑1:这是在SSH中使用-v开关后的输出 debug1: Authentication succeeded (publickey). debug1: channel 0: new [client

我正在尝试使用ssh在远程服务器上执行命令。命令如下

ssh machine -l user "ls"
这个命令被夹在中间,最后我们不得不暂停它

但是,执行命令
ssh machine-l user
工作正常,该命令使我们连接到远程机器

请有人帮助找出为什么远程服务器上的ls不能通过ssh工作的根本原因

编辑1:这是在SSH中使用-v开关后的输出

debug1: Authentication succeeded (publickey).
debug1: channel 0: new [client-session]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
debug1: Sending command: ls
打印后
发送命令:ls
终端停止。

问题: 问题是发生在命令行还是脚本中? 是否提示您输入密码? 有输出吗?如果是:张贴在这里

试一试

ssh-vuser@host“ls”

ssh-v-l用户主机“ls”

您将获得额外的输出。您最多可以使用-v选项3次以获得更高的详细性

ssh-vvvl用户主机“ls”

编辑:

如果我必须调试它,我将执行以下操作:

  • 转到目标计算机,即您要“ssh”到的计算机
  • 使用您尝试使用ssh的同一用户登录
  • 输入“ls”命令
这是一件不寻常的事情,但“ls”不一定是您所期望的

哪个ls

然后将输出与ssh调用的完全限定名称一起使用,例如:

ssh机器-l用户/bin/ls“

请记住,当通过ssh执行命令时,您不会自动拥有与常规登录相同的路径

最后,检查目标机器上的日志文件。它们通常位于/var/log下(至少在debian下)

编辑2:

在linux机器上,我有时会遇到“ls”命令在没有任何输出的情况下挂起的问题。当目录中的文件系统在某种程度上“无效”时,我会遇到这种情况。例如,如果有一个android mtpfs的无效挂载,ls命令将无法处理该问题并挂起

因此,尝试“ls”一个不同的目录,例如

ssh主机-l用户“ls/tmp”


如果这样做有效,那么从命令行检查是否存在导致ls命令失败的无效状态的目录或文件。

我怀疑发生了以下两种情况之一。首先,ssh服务器可能被设置为为为用户启动特定命令,而不管您要求运行什么命令。您会看到这种行为例如,如果用户是。有两种设置方法:

  • 远程服务器中的ForceCommand指令
  • 远程用户中用于所用密钥的指令
  • 检查这一点的最简单方法是登录到远程服务器并检查这两个文件。或者,您可以启动其中一个ssh会话,让它挂起,然后在远程服务器上运行“ps”,以查看正在为相关用户运行的实际进程


    另一种可能性是,远程用户在其.bashrc或其他shell启动脚本中有一行正在引入等待或等待您键入内容。同样,您应该启动其中一个ssh会话,让它挂起,然后运行“ps”在远程服务器上查看用户正在运行的实际进程。

    该文件夹中有多少文件?可以在“@”之前或“-l”之后使用usernmame。因此,在您的情况下,请尝试:
    sshuser@machine“ls”
    host@machine
    ?我不认为这意味着你认为这意味着什么。这是一种指定用户和服务器的方式。将它与
    -l
    结合起来是没有意义的。另外-尝试
    ssh-v
    strace-fttls
    后两种语言中提到的内容username@host或-l用户名,优先;这就是为什么你从来没有注意到它。@hesham_EE-抱歉,这是ssh机器-l用户“ls”,即使host@machine“看起来很奇怪,提问者说这对他有效。名为“主机”的用户很奇怪,但没有错 那么,被否决的答案有什么错呢?请阅读对该问题的评论。我已经编辑了你的答案,正在等待同行评审。您可能会争辩说主机是一个有效的用户名,但OP并不是这么认为的。你应该纠正他。这对他来说很有效,因为他在命令的后半部分提到了-l user,而不是因为host是一个可能的用户名。