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
여기에는 두 가지 사항이 있습니다.
클라이언트 컴퓨터의 명령줄에 비밀번호를 입력하는 대신 대화형 비밀번호 없이 원격으로 로그인하려면
~/.ssh/authorized_keys
at을 사용하세요 .[email protected]
또한 cron이나 다른 수단을 통해 작업이 자동으로 실행될 수 있습니다./etc/sudoers
연결하는 사용자가 루트로 명령을 실행할 수 있도록 원격 시스템에서 구성합니다74.11.11.11
. 이 경우:username
.
따라서 귀하의 예에서는 /etc/sudoers
on을 74.11.11.11
사용하면 사용자가 비밀번호가 없는 것처럼 username
실행할 수 있습니다.mkdir
root
이미 시도했지만 효과가 없다면 를 실행하세요 man sudoers
.
답변3
사용하지 말라는 제안 외에도 sshpass
명령줄에서 "숨기기"도 가능합니다.
- 거기에서 편집하여
/etc/profile
붙여넣으세요.export SSHPASS='my_pass_here'
-e
sshpass
명령 에 매개변수 사용$ sshpass -e ssh [email protected] 'ls -ll'
- 또 다른 옵션은 비밀번호를 다른 파일에 저장하고 매개변수를 사용하는 것입니다
-f
.$ sshpass -f password_filename ssh [email protected] 'ls -la'
하지만 가장 좋은 해결책은 다음을 따르는 것입니다.@hristomohamed 제안:
일반적으로 sshpass를 비밀번호와 함께 사용하지 마십시오.
생성된 SSH 키를 쉽게 설정하여 작업을 수행한 다음 삭제할 수 있습니다.