SSH 및 리디렉션

SSH 및 리디렉션

다음 명령을 고려하십시오.

ssh aristotle sudo /bin/sh < test.sh

리디렉션을 적용하고 싶지만 /bin/shsudo에서 사용됩니다. 내가 원하는 것을 달성하는 방법에 대한 아이디어가 있습니까?

답변1

test.sh를 복사한 다음 호출하면 어떨까요?

scp test.sh aristotle:/tmp/test.$$.sh
ssh aristotle sudo /bin/sh /tmp/test.$$.sh
ssh aristotle rm /tmp/test.$$.sh

$$는 로컬 시스템에 있는 프로세스의 PID로, 어느 정도 무작위성을 제공하므로 파일이 손상되지 않습니다.

답변2

리디렉션~이다ssh와 sudo로 작업합니다! 이는 ssh 및/또는 sudo의 비밀번호 대화 상자에만 방해가 됩니다.

따라서 리디렉션을 사용하지 않고 먼저 스크립트를 대상 컴퓨터에 복사한 다음 실행하는 것과 같은 해결 방법(예: @edoloughlin)제안됨).

또는 비밀번호를 묻는 메시지를 표시하지 않도록 ssh 및 sudo를 구성합니다. 그러면 그것은 매력처럼 작동합니다.

$ echo "hostname" | ssh -A orwell sudo /bin/sh
orwell

SSH를 비밀번호 없이 사용하는 방법을 설명하는 수천 개의 하우투가 있으므로 그 부분은 설명하지 않습니다. 그리고 sudo의 경우 비밀번호 없이 사용할 수 있는 방법이 여러 가지 있습니다. @jtumberman제안됨일반적으로 문제의 사용자에게 비밀번호 없는 sudo를 허용하려면(sudo의 NOPASSWD기능을 통해 참조)sudoers(5)).

저는 개인적으로 PAM 모듈을 사용합니다.pam-ssh-에이전트. 이를 통해 sudo는 전달된 SSH 에이전트에 대해 인증할 수 있으며 SSH 에이전트를 사용할 수 없는 경우에만 비밀번호 기반 인증으로 대체됩니다. 데비안과 우분투에서는

apt-get install pam-ssh-agent-auth

그런 다음 문서에 설명된 대로 구성합니다.pam_ssh_agent_auth(8).

답변3

다음 방법을 시도해 보세요.

ssh aristotle sudo /bin/sh -c "/bin/sh \\< test.sh"

답변4

나는 ssh somehost sudo cat \< /etc/passwd약간의 성공을 거두었습니다. 다음과 같이 시도해 보세요:

ssh aristotle sudo /bin/sh \< test.sh

관련 정보