Linux 通过ssh在远程服务器上执行命令不会';行不通
我正在尝试使用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 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
然后将输出与ssh调用的完全限定名称一起使用,例如:
ssh机器-l用户/bin/ls“
请记住,当通过ssh执行命令时,您不会自动拥有与常规登录相同的路径
最后,检查目标机器上的日志文件。它们通常位于/var/log下(至少在debian下)
编辑2:
在linux机器上,我有时会遇到“ls”命令在没有任何输出的情况下挂起的问题。当目录中的文件系统在某种程度上“无效”时,我会遇到这种情况。例如,如果有一个android mtpfs的无效挂载,ls命令将无法处理该问题并挂起
因此,尝试“ls”一个不同的目录,例如
ssh主机-l用户“ls/tmp”
如果这样做有效,那么从命令行检查是否存在导致ls命令失败的无效状态的目录或文件。我怀疑发生了以下两种情况之一。首先,ssh服务器可能被设置为为为用户启动特定命令,而不管您要求运行什么命令。您会看到这种行为例如,如果用户是。有两种设置方法:
另一种可能性是,远程用户在其.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是一个可能的用户名。