O ssh
executa os comandos que você fornece no shell do usuário remoto (obtido de /etc/passwd
), como é visível no código da fonte :
argv[0] = (char *) shell0;
argv[1] = "-c";
argv[2] = (char *) command;
argv[3] = NULL;
execve(shell, argv, env);
Portanto, os respectivos comandos que são executados para o seu exemplo no servidor remoto são:
-
bash -c declare
-
bash -c mount
Ambos são passados para o bash
e avaliados. Os built-ins são avaliados internamente e os comandos externos são chamados como se você fizesse isso a partir do prompt de linha de comando local.