"sudo su -"를 사용하여 루트로서 명령을 안전하게 자동화하려면 어떻게 해야 합니까?

"sudo su -"를 사용하여 루트로서 명령을 안전하게 자동화하려면 어떻게 해야 합니까?

팁(클라이언트 측에서 파일/비밀번호를 암호화하는 방법):

# encrypt pwd with ssh key: 
openssl rsa -in ~/.ssh/id_rsa -outform pem > ~/.ssh/TEMP-id_rsa.pem 2>/dev/null
openssl rsa -in ~/.ssh/id_rsa -pubout -outform pem > ~/.ssh/TEMP-id_rsa.pub.pem 2>/dev/null
echo $PWDHERE > ~/.ssh/TEMP.pwd
openssl rsautl -encrypt -pubin -inkey ~/.ssh/TEMP-id_rsa.pub.pem -in ~/.ssh/TEMP.pwd -out ~/.ssh/TEMP.pwd.enc 2>/dev/null
rm ~/.ssh/TEMP.pwd > /dev/null 2>&1

# decrypt: 
PWDHERE=`openssl rsautl -decrypt -inkey ~/.ssh/TEMP-id_rsa.pem -in ~/.ssh/TEMP.pwd.enc`

따라서 .. 서버 측 루트 사용자를 사용하여 서버에서 SSH를 통해 명령 실행을 자동화하는 것은 매우 간단한 작업이 될 것입니다. (결국 우리는 루트 사용자를 사용하여 서버 측 데스크톱 시스템에서 스크립트를 실행해야 합니다. 자동화 명령만 알면 충분합니다. 거기에서 우리는 이것을 할 수 있습니다..).

하지만:문제는먼저 서버에서 "sudo su -"를 수행하고 거기에 비밀번호를 제공해야 하는 경우 루트로 명령 실행을 안전하게 자동화할 수 있나요?

업데이트: sudoers 파일 수정은 옵션이 아닙니다. (어쩌면 인형이 이것을 할 수 있을까요?)

업데이트 #2:

echo myPassword | sudo -S ls /tmp

AFAIK는 안전하지 않습니다. (다른 사용자가 'ps -ef'를 하면 잠시 동안 비밀번호를 볼 수 있기 때문일까요?) 따라서 이것도 해결책이 아닙니다.

업데이트 #3: "임시 명령을 사용하여 기계를 원격으로 제어"하고 싶습니다.

답변1

당신이 하려는 일은 그 자체가 벌레이므로 해서는 안 되는 일입니다.

이를 고려하여 "안전"에 대한 요구 사항을 재고하고 싶을 수도 있습니다. 왜 귀찮게 합니까 sudo? 루트 로그인을 허용하지만 공개 키 인증만 사용하는 (두 번째) SSH 서버를 설정할 수 있습니다. 이렇게 하면 비밀번호를 전혀 전송할 필요가 없으며 루트로 로그인하고 명령을 실행하기만 하면 됩니다. 당신은 간단하게 할 수 있습니다

  • 에 저장되어 있을 가능성이 가장 높은 현재 SSH 서버의 구성을 복사합니다 /etc/ssh/sshd_config.
  • 다음으로 수정하세요
  • 루트 로그인 허용,
  • 공개 키 인증을 허용합니다.
  • 비밀번호 확인을 거부하고,
  • 666과 같은 다른 포트에서 수신 대기하도록 하세요.
  • sshd새 대체 구성 파일을 사용하여 새 인스턴스를 시작하려면 이 옵션을 사용합니다 -f.

ssh root@server -p 666 "ls -la /"그런 다음 sudo 및 비밀번호 없이 데스크탑 시스템에서 인증 할 수 있도록 공개 키 인증을 설정하십시오 .

짐을 꺼내보세요 :-)

답변2

이것은 최선의 방법이 아니다. 그러나 귀하의 접근 방식은 귀하가 주장하는 결함으로 인해 어려움을 겪지 않습니다. 당신이 달릴 때

echo myPassword | sudo -S ls /tmp

비밀번호는 외부 명령에 대한 인수로 표시되지 않습니다. 모든 쉘(일부 BusyBox 설치 제외 - 컴파일 옵션에 따라 다름)에는 비밀번호가 echo내장되어 있습니다.

답변3

저는 실제로 Python을 사용합니다.구조그리고카피스트라노. 모두 배우기 쉽고 여러분의 삶을 훨씬 더 쉽게 만들어 줄 것입니다.

답변4

이것은 잘못된 접근 방식인 것 같습니다. 무엇을 하려는 건가요?

임시 명령을 사용하여 기계를 원격으로 제어한 다음 다음과 같은 것을 사용하십시오.csshx

또는 자동으로 루트가 cron을 통해 작업을 실행하도록 한 다음 서버에서 cron 작업을 설정하면 서버는 로그인하고 작업을 시작하기 위해 클라이언트 컴퓨터에 의존하지 않습니다.

관련 정보