![SSH 루트에서 Linux 루트 비밀번호를 확인하는 방법은 무엇입니까?](https://rvso.com/image/154443/SSH%20%EB%A3%A8%ED%8A%B8%EC%97%90%EC%84%9C%20Linux%20%EB%A3%A8%ED%8A%B8%20%EB%B9%84%EB%B0%80%EB%B2%88%ED%98%B8%EB%A5%BC%20%ED%99%95%EC%9D%B8%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
원격 컴퓨터의 루트 비밀번호를 어떻게 확인할 수 있나요?
일반적으로 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 접속했기 때문에 항상 비밀번호가 포함된 목록을 반환합니다.
그리고 사용자 sudo로 ssh를 실행하면 사용자의 비밀번호를 묻는 메시지가 표시됩니다.
나는 루트 암호를 묻는 메시지가 표시되지만 위와 같이 스크립트를 작성할 수 없다는 것을 알았기 때문에 su 사용자 && su root로 무언가를 얻으려고 노력해 왔습니다.
루트 셸의 'login root'도 항상 비밀번호를 묻는 메시지를 표시하지만 이에 대한 일반 텍스트 비밀번호를 스크립트로 작성할 수는 없습니다.
나는 이 질문을 읽었지만 원격 컴퓨터에 설치해야 하는 사용자 정의 응용 프로그램을 작성하는 대신 내장된 방법으로 이를 수행할 수 있기를 바랐습니다. Linux에서 비밀번호를 확인하는 방법은 무엇입니까?
답변1
대상 머신에 대한 구성이 sudo
옵션인 경우 사용자 비밀번호 대신 루트 비밀번호를 묻는 rootpw
특정 명령을 설정할 수 있습니다. sudo
예를 들어 파일에 다음 줄을 추가할 수 있습니다
/etc/sudoers.d/lsrootpw
( sudo
필요한 경우 서비스를 다시 시작).
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 다시 시작).