通过 ssh 远程执行命令不起作用

May*_*ain 3 unix linux ssh

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

ssh machine -l user "ls"
Run Code Online (Sandbox Code Playgroud)

这个命令卡在中间,最后我们不得不暂停它。

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

有人可以帮助找出远程服务器上的 ls 无法通过 ssh 工作的根本原因吗?

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

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
Run Code Online (Sandbox Code Playgroud)

打印后Sending command: ls终端卡住。

Ken*_*ter 6

我怀疑正在发生两件事之一。首先,ssh 服务器可以设置为为用户启动特定命令,无论您要求运行什么命令。例如,如果用户被限制为以通常方式运行 SFTP ,您就会看到此行为。有两种方法可以设置:

  1. 远程服务器的sshd 配置文件中的 ForceCommand指令。
  2. 远程用户的authorized_keys 文件中针对正在使用的密钥的指令。

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

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