비 대화식 ssh 명령을 실행 중입니다. ssh 인증은 ssh 에이전트를 통해 잘 처리되지만 sudo가 필요한 명령을 실행하면 터미널의 비밀번호 프롬프트가 일반 텍스트입니다. 예를 들면 다음과 같습니다.
ssh remotemachine "sudo -u www mkdir -p /path/to/new/folder"
일반 텍스트로 비밀번호를 입력하라는 메시지가 표시됩니다. 누구나 정상적인 보안 프롬프트를 사용하거나 스위치를 통해 암호를 전달할 수있는 방법을 알고 있습니까? (그러므로 명령을 보내기 전에이 쪽에서 보안 프롬프트를 설정할 수 있습니다)
도움을 주시면 감사하겠습니다.
답변
사용 ssh -t
:
남자 ssh
-t Force pseudo-tty allocation. This can be used to execute arbitrary
screen-based programs on a remote machine, which can be very useful,
e.g. when implementing menu services. Multiple -t options force tty
allocation, even if ssh has no local tty.
그래서 당신의 명령은
ssh remotemachine -t "sudo -u www mkdir -p /path/to/new/folder"
비밀번호를 입력하지 않으려면 sudoers
command를 사용하여 ( 허용 된 경우) 수정할 수 visudo
있습니다.
NOPASSWD:
예를 들어 매개 변수 추가
username ALL=(ALL) NOPASSWD: /bin/mkdir
/ etc / sudoers를 편집 할 수 없으면 다음을 사용할 수 있습니다 sudo -S
.
남자 수도
-S The -S (stdin) option causes sudo to read the password from
the standard input instead of the terminal device. The
password must be followed by a newline character.
그것으로, 명령은
echo "your_password" | ssh remotemachine -t \
"sudo -S -u www mkdir -p /path/to/new/folder"
이것은 쉘의 명령 히스토리에 bash를 추가한다는 것을 기억하십시오 (bash와 함께 ~/.bash_history
파일 이 됩니다).