SSH를 통해 sudo를 사용하여 루트 암호를 변경하려면 어떻게해야합니까?


4

sudo를 사용하여 SSH를 통해 루트 암호를 다시 설정하려고합니다. 루트로 로그인하면 직접 로그인 할 수 없기 때문입니다.

아래 명령을 사용하여 암호를 재설정합니다.

sshpass -f .pass ssh kj@server2 'bash -s' < password.sh

이것을 실행할 때 sudo 암호를 묻는 메시지가 나타나고 실패합니다.

password.sh 아래 내용이 있습니다.

MYPASS=abcd@123

echo $MYPASS | sudo -kS bash -c 'echo passwd | passwd root --stdin'

어떻게하면 SSH와 sudo를 사용하여 성공적으로 암호를 재설정 할 수 있습니까?


1
왜 서버에 직접 로그인하여 실행하지 않는가? sudo passwd root 대화식으로? 사용자 kj 사용 허가를 받아야한다. sudopasswd.
Seth

하나의 서버라면 괜찮지 만 70 개 이상의 서버에서이 작업을 수행해야합니다. 예. kj는 모든 서버에서 sudo 권한을가집니다.
KumarJohn

실행하여 한 서버에서 수동으로 수행 할 수 있습니까? sudo passwd root? 실제로 그 일을 할 수 있는지 확인하기 만하면됩니다. 지금 암호를로 설정했습니다. passwd 하지 MYPASS.
Seth

예, 할 수있었습니다.
KumarJohn

답변:


1

다음과 같이 작성하면됩니다.

ssh user@machine 'sudo passwd' << END
<password>
<password>
END

또한 암호 대신 인증서를 사용하여 컴퓨터에 로그인하는 것이 좋습니다. 그렇게하면 절차가 좀 더 수월해집니다.


이 질문에 대한 답변을 제공하지 않습니다. 비평하거나 저자의 설명을 요청하려면 게시물 아래에 의견을 남겨 둡니다. - 리뷰에서
Burgi

문제는 "SSH 및 sudo를 사용하여 어떻게 성공적으로 암호를 재설정 할 수 있습니까?"이며,이를 수행하는 방법을 보여주는 대답입니다. 그 문제점은 무엇입니까?
Bex

너는 대답이 매우 저질 인 것으로 판명되었다. OP에게 무언가를 명확히하도록 요청하는 방식으로 대답을 표현했습니다. 추가 컨텍스트를 추가 할 수 있다면 괜찮을 것이라고 확신합니다. 참조하십시오 답변하는 방법 .
Burgi

0

다음과 같은 문자 $"\` ...에서 $MYPASS 아마도 bash에 의해 확장 될 것이고, 따라서 sudo로 보내지는 패스워드는 당신이 기대하는 바가 아닐 것이다.

말 그대로 bash 확장없이 문자열을 출력하려면 printf '%s\n' "$1"

sshpass -f "$SSH_PASS" ssh -t -l "$SSH_USER" -p "$SSH_PORT" "$SERVER" \
    "printf '%s\n' \"root:$PASSWORD\" | sudo chpasswd -c SHA512"

$ MYPASS에는 문제가 없습니다. 문제는 ssh를 사용하여 동일하게 실행할 수 없다는 것입니다.
KumarJohn

0

아래 명령을 실행하여이 문제를 해결할 수있었습니다.

sshpass -f .pass ssh kj@server2 "echo abcd@123 | sudo -kS bash -c 'echo passwd | passwd root --stdin'"

더 나은 해결책이 있다면 나는 당신의 제안을 환영 할 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.