ssh 如何运行命令?

ssh 如何运行命令?

我在客户端和服务器上都使用 Bash。通过 SSH 运行命令时:

  • ssh <host> 'declare'给出 shell 变量的列表.

  • ssh <host> 'mount'给出安装点列表。

然而,declare是 Bash 内置命令,而mount是外部命令。如果服务器上存在同名的内置 shell 和外部命令,SSH 如何知道要运行哪一个?

答案1

运行ssh您在远程用户的 shell 中提供的命令(从/etc/passwd),如从源代码

argv[0] = (char *) shell0;
argv[1] = "-c";
argv[2] = (char *) command;
argv[3] = NULL;
execve(shell, argv, env);

因此,在远程服务器上为您的示例执行的相应命令是:

  • bash -c declare
  • bash -c mount

它们都被传递给bash并进行评估。内置命令在内部进行评估,并调用外部命令,就像您从本地命令行提示符中执行此操作一样。

相关内容