비밀번호 없이 원격으로 ssh 명령과 sudo 명령을 실행하는 방법

비밀번호 없이 원격으로 ssh 명령과 sudo 명령을 실행하는 방법

"admin" 사용자에게는 SSH 세션을 허용하지만 "root" 사용자에게는 SSH 세션을 허용하지 않도록 구성된 Linux(debian 기반) 서버가 있습니다. 두 계정은 동일한 비밀번호를 공유하기 때문에 어떻게든 연결됩니다.

관리자로서 SSH 세션을 진행하는 동안 "root" 사용자로 전환하지 않는 한 명령을 실행하려면 "sudo"가 필요합니다.

시스템 시작 시에도 때때로 실행해야 하는 일부 서비스가 있습니다. 저는 현재 개인/공개 키 메커니즘을 사용하여 서버에서 원격으로 명령을 실행하고 있습니다. 일부 명령은 수동으로 입력되었고 다른 명령은 내가 실행한 쉘 스크립트였습니다. 현재 명령이 sudo를 사용할 때 서버는 여전히 비밀번호를 요구합니다.

질문: 비밀번호를 제공하지 않고 "admin" 사용자로 원격으로 이를 실행하려면 어떻게 해야 합니까? sudo 요구 사항을 충족하기 위해 개인/공개 키를 사용할 수 있습니까? 아니면 사용자 "root"로 쉘 스크립트를 시작하는 방법이 있을까요?

sudo를 사용하여 비밀번호 입력을 피할 수 있습니까? 그렇지 않다면 나와 같은 상황에 대해 어떤 다른 옵션이 있습니까?

답변1

특정 명령에 대해 비밀번호를 건너뛰도록 sudo에 지시할 수 있습니다.

예를 들어/etc/sudoers

archemar  ALL = (www-data) NOPASSWD: /bin/rm -rf /var/www/log/upload.*

이를 통해 다음을 사용할 수 있습니다.

sudo -u www-data /bin/rm -rf /var/www/log/upload.*

비밀번호가 없는 Archemar로.

알아채다

sudo -u www-data rm -rf /var/www/log/upload.*

(*) rm때문에 작동하지 않습니다(비밀번호를 묻습니다) ./bin/rm

편집하려면 명령을 /etc/sudoers사용 하십시오 .visudo

고급 수준에 도달하면 /etc/sudoers.d.


(*) 최신 운영 체제(2022년경 redhat 7.x)의 이러한 변경 사항으로 인해 rm경로가 일치 /bin/rm하면 sudoers.conf를 사용할 수 있습니다 rm.

답변2

stdin가장 쉬운 방법은 지원 하는 경우 비밀번호를 제공하는 것입니다 sudo(-S 키)

ssh -t admin@remotehost "echo <yourpassword> |sudo -S <yourcommand>"

답변3

계정이 어떤 방식으로 연결되어 있는 경우 한 계정에는 SSH를 허용하고 다른 계정에는 허용하지 않는 것은 의미가 없습니다. 내가 할 일은 다음과 같습니다.

  • 비밀번호가 아닌 SSH 키로만 액세스를 허용하는 루트용 SSH를 활성화합니다.
  • 특정 명령에만 사용할 새 키를 만듭니다.
  • 실행해야 하는 키와 명령을 authorized_keys루트에 배치하면 키에 연결되면 명령이 실행됩니다.

이는 호출자가 쉘을 가질 수 없고 다른 명령을 실행할 수 없기 때문에 안전합니다(그가 쉘을 제공하더라도).

여기에서 예를 볼 수 있습니다.https://stackoverflow.com/questions/402615/how-to-restrict-ssh-users-to-a-predefine-set-of-commands-after-login그리고 command=문법. 키 대신 인증서를 사용하는 경우 명령을 인증서에 포함하여 동일한 작업을 수행하거나 구성 옵션을 사용하여 전역적으로 수행할 수도 있습니다.ForceCommand

바라보다http://larstobi.blogspot.com/2011/01/restrict-ssh-access-to-one-command-but.html또 다른 예(명령의 매개변수를 고려해야 함을 보여줍니다)

답변4

Archemar의 답변에 추가하려면 명령을 실행하는 sudo사용자의 비밀번호가 아닌 실행 중인 사용자의 비밀번호를 입력하세요 . sudo"admin"과 "root" 계정이 "연결"되어 있으며 동일한 비밀번호를 공유한다고 말합니다. sudo"admin" 계정의 비밀번호를 수락하는 것(및 sudo"admin"의 비밀번호가 변경될 때 변경되는 비밀번호를 허용하는 비밀번호) 을 기반으로 이러한 결론에 도달했다면 이는 정상적인 동작입니다 sudo.

관련 정보