SSH 루트에서 Linux 루트 비밀번호를 확인하는 방법은 무엇입니까?

SSH 루트에서 Linux 루트 비밀번호를 확인하는 방법은 무엇입니까?

원격 시스템의 루트 비밀번호를 확인하는 방법은 무엇입니까?

나는 일반적으로 SSH 루트와 다른 사용자를 통해 액세스하는 원격 시스템을 가지고 있습니다. 보안을 위해 중앙 서버에서 모든 키와 사용자 비밀번호를 주기적으로 변경하는 스크립트가 있습니다.

루트가 아닌 사용자의 경우 비밀번호가 다음과 같이 업데이트됩니다.

ssh -i a_priv_key root@ip "echo 'user:NEWPASS' | chpasswd"

확인해 보니 정말 바뀌었습니다.

ssh -i b_priv_key user@ip "echo NEWPASS | sudo -S ls /root"

그러나 루트 사용자로 동일한 작업을 수행하려면 꼼짝 못하게 됩니다. sudo -S ls /root는 루트로 원격 시스템에 SSH 연결을 하기 때문에 항상 비밀번호가 포함된 목록을 반환합니다.

사용자로 SSH에 접속하면 사용자 비밀번호를 묻는 메시지가 표시됩니다.

나는 루트 비밀번호를 묻는 메시지가 표시되지만 위와 같이 스크립트를 작성할 수 없다는 것을 알았기 때문에 su user && su root를 사용하여 무언가를 얻으려고 노력했습니다.

루트 셸의 "login root"도 항상 비밀번호를 묻는 메시지를 표시하지만 일반 텍스트 비밀번호도 스크립트로 작성할 수 없습니다.

나는 이 질문을 읽었지만 원격 컴퓨터에 설치해야 하는 사용자 정의 응용 프로그램을 작성하는 대신 이를 수행할 수 있는 기본 제공 방법이 있었으면 좋겠습니다. Linux에서 비밀번호를 확인하는 방법은 무엇입니까?

답변1

대상 머신에 구성할 수 있는 옵션이 있는 경우 사용자 비밀번호 대신 루트 비밀번호가 필요한 특정 명령을 sudo설정할 수 있습니다 . 예를 들어 파일에 다음 줄을 추가할 수 있습니다 ( 필요한 경우 서비스를 다시 시작).rootpwsudo/etc/sudoers.d/lsrootpwsudo

Defaults!/bin/ls        rootpw

이렇게 하면 작업을 수행하는 루트 이외의 모든 사용자에게 sudo ls자신의 비밀번호 대신 루트 비밀번호를 묻는 메시지가 표시됩니다. 그래서 당신은 테스트 할 수 있습니다

ssh -i b_priv_key root@ip su user sudo -S ls /root <<< "NEWPASS"

NEWPASS이는 비밀번호가 올바른지 여부에 따라 어떤 방식으로든 발생합니다 root. 이 테스트에는 대상에 sudo 사용자가 필요합니다.

또는 Debian 명령이 있는 경우 다음과 같이 사용할 runuser수 있습니다 nobody.

ssh -i b_priv_key root@ip runuser -u nobody -- sudo -S ls /root <<< "NEWPASS"

또한 비밀번호의 정확성에 따라 항상 두 가지 다른 결과가 생성됩니다. 특히, 올바른 비밀번호를 입력하면 해당 비밀번호가 파일 nobody에 존재하지 않는다는 불만이 제기됩니다. sudoers./etc/sudoers.d/lsrootpw

물론 전체적으로 이것은 대상 호스트에 무언가를 설치해야 한다는 점에서 사용자 정의 애플리케이션과 크게 다르지 않습니다. 한편, 이 모든 작업은 5개의 원격 명령(add lsrootpw, restart sudo, 테스트, 제거 lsrootpw및 sudo 다시 시작) 을 통해 수행할 수 있습니다.

관련 정보