linux - 通过 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-session]
debug1: Entering interactive session.
debug1: Sending environment.
debug1: Sending env LANG = en_US.UTF-8
debug1: Sending command: ls

打印完 Sending command: ls 终端卡住了。

最佳答案

我怀疑正在发生以下两种情况之一。首先,ssh 服务器可能被设置为为用户启动一个特定的命令,而不管您要求运行什么命令。如果用户是 restricted to running SFTP in the usual manner,您会看到此行为, 例如。有两种设置方法:

  1. 远程服务器的 sshd configuration file 中的 ForceCommand 指令.
  2. 远程用户的指令 authorized_keys file正在使用的 key 。

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

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

关于linux - 通过 ssh 远程执行命令不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30235423/

相关文章:

linux - 为什么 qemu 在尝试运行已经运行的操作系统的 VM 时会变黑?

linux - 确定性地从财富中生成输出

python - 使用 CPU 的已失效进程

linux - 如何在远程主机上运行 bash function()?在Ubuntu中

Python、paramiko 和转发代理 ssh

svn - IntelliJ IDEA 13.1 不断询问 SVN 的凭据

复制 bash 中主动写入 bash 的文件

linux - 命令执行位置

c - 关于 UNIX 作为虚拟机和 C 作为脚本语言的引用来源

unix - 命令管道进入子shell