SSH를 통해 명령을 실행하는 방법은 무엇입니까?

SSH를 통해 명령을 실행하는 방법은 무엇입니까?

저는 클라이언트와 서버 모두에서 Bash를 사용하고 있습니다. SSH를 통해 명령을 실행하는 경우:

  • ssh <host> 'declare'쉘 변수 목록을 제공합니다.

  • ssh <host> 'mount'마운트 지점 목록을 제공합니다.

그러나 declare이는 Bash 내장 명령 mount이지만 외부 명령입니다. 동일한 이름을 가진 내장 셸과 외부 명령이 서버에 존재하는 경우 SSH는 어떤 명령을 실행할지 어떻게 알 수 있습니까?

답변1

ssh다음과 같이 원격 사용자의 셸(에서 /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평가됩니다. 내장 명령은 내부적으로 평가되며 마치 로컬 명령줄 프롬프트에서 수행한 것처럼 외부 명령을 호출합니다.

관련 정보