我正在尝试使用 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,您会看到此行为, 例如。有两种设置方法:
- 远程服务器的 sshd configuration file 中的 ForceCommand 指令.
- 远程用户的指令 authorized_keys file正在使用的 key 。
检查这一点的最简单方法是登录到远程服务器并检查这两个文件。或者,您可以启动其中一个 ssh session ,让它挂起,然后在远程服务器上运行“ps”以查看正在为相关用户运行的实际进程。
另一种可能性是远程用户在他的 .bashrc 或其他 shell 启动脚本中有一行引入了等待或等待您键入内容。同样,您应该启动这些 ssh session 之一,让它挂起,然后在远程服务器上运行“ps”以查看正在为用户运行的实际进程。
关于linux - 通过 ssh 远程执行命令不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30235423/