su 명령 중에 호출될 때 비밀번호를 숨기는 방법은 무엇입니까?

su 명령 중에 호출될 때 비밀번호를 숨기는 방법은 무엇입니까?

su 명령을 사용한 것은 이번이 처음이며 실제로 터미널에 비밀번호가 표시되고 숨겨지지 않습니다. 내 코드 조각은 다음과 같습니다.

 sshpass -p "password" ssh -q [email protected] "su -lc 'mkdir temp/'"

코드 설명: 원격 서버에 액세스하고 해당 서버에 루트로 폴더를 만들려고 합니다. 이렇게 하려면 비밀번호를 묻는 su 명령을 사용해야 합니다. 비밀번호를 입력하면 숨겨지지 않고 표시됩니다. 이 문제를 어떻게 해결할 수 있나요?

답변1

평소에는 부탁드립니다피하다sshpass와 비밀번호를 사용하세요.
다른 사용자는 ps 명령을 사용하여 작성한 모든 내용을 관찰할 수 있습니다.~해야 한다당신을 걱정합니다.
여기서 두 번째 질문입니다. 지정하신 내용이 보이지 않습니다.-티옵션. 이것은 당신이 가지고 있다는 것을 의미합니다장애가 있는

Defaults    requiretty

이로 인해 /etc/sudoers에 보안 문제가 발생할 수 있습니다.

여전히 sshkeypass에 문제가 있는 경우 다음을 시도해 보세요.

sshpass -p "password" ssh -qt [email protected] "su -lc 'mkdir temp/'"

생성된 SSH 키를 쉽게 설정하여 작업을 수행한 다음 삭제할 수 있습니다.

ssh-keygen -t rsa

화면의 지시를 따르고,

ssh-copy-id user@server1

아니면 이렇게 할 수도 있습니다:

cat ~/.ssh/id_rsa.pub | ssh user@server1 "mkdir -p ~/.ssh && cat >>  ~/.ssh/authorized_keys"

답변2

여기에는 두 가지 사항이 있습니다.

  1. 클라이언트 컴퓨터의 명령줄에 비밀번호를 입력하는 대신 대화형 비밀번호 없이 원격으로 로그인하려면 ~/.ssh/authorized_keysat을 사용하세요 . [email protected]또한 cron이나 다른 수단을 통해 작업이 자동으로 실행될 수 있습니다.

  2. /etc/sudoers연결하는 사용자가 루트로 명령을 실행할 수 있도록 원격 시스템에서 구성합니다 74.11.11.11. 이 경우: username.

따라서 귀하의 예에서는 /etc/sudoerson을 74.11.11.11사용하면 사용자가 비밀번호가 없는 것처럼 username실행할 수 있습니다.mkdirroot

이미 시도했지만 효과가 없다면 를 실행하세요 man sudoers.

답변3

사용하지 말라는 제안 외에도 sshpass명령줄에서 "숨기기"도 가능합니다.

  • 거기에서 편집하여 /etc/profile붙여넣으세요.
    export SSHPASS='my_pass_here'
    
  • -esshpass명령 에 매개변수 사용
    $ sshpass -e ssh [email protected] 'ls -ll' 
    
  • 또 다른 옵션은 비밀번호를 다른 파일에 저장하고 매개변수를 사용하는 것입니다 -f.
    $ sshpass -f password_filename ssh [email protected] 'ls -la' 
    

하지만 가장 좋은 해결책은 다음을 따르는 것입니다.@hristomohamed 제안:

일반적으로 sshpass를 비밀번호와 함께 사용하지 마십시오.

생성된 SSH 키를 쉽게 설정하여 작업을 수행한 다음 삭제할 수 있습니다.

관련 정보