SSH를 통해 실행되는 스크립트에 비밀번호 전달

SSH를 통해 실행되는 스크립트에 비밀번호 전달

이것은 중복이 아닙니다이 문제. SSH와 키 쌍을 사용하여 원격 서버에 로그인합니다(비밀번호 필요 없음). 원격 서버에서 내 스크립트에는 다른 비밀번호가 필요합니다.

로그인하여 스크립트를 실행하면 비밀번호를 입력하라는 메시지가 표시되고 모든 것이 잘 작동합니다.

my-local> ssh my-remote
my-remote> ./my-script
Password for something else: ***
OK
my-remote> exit

한 단계에서 이 작업을 수행하려고 하면 다음과 같은 오류가 발생합니다.

my-local> ssh my-remote ./my-script
fatal: could not read Password for .... No such device or address

비밀번호를 입력해도 전혀 상관이 없어요내가 할 수 있다면.

그러나 부가적인 질문으로 "my-local"의 비밀번호를 안전한 방법으로 전달할 수 있는지 알고 싶습니다("my-remote"의 스크립트에 비밀번호를 저장하고 싶지 않습니다).

두 서버 모두 Ubuntu 16.04입니다.

답변1

도구는 tty명령을 지정하면 ssh원격 서버에 TTY를 할당하지 않으므로 실패할 것이라고 읽고 있습니다. ssh스위치를 사용하여 원격 서버에 TTY를 강제로 할당 할 수 있습니다 -t.

ssh -t my-remote ./my-script

당신을 위해 일을 해야 합니다.

답변2

일부 프로그램은 stdin 대신 /dev/tty에서 직접 읽습니다. 예를 들어 "passwd"입니다. 그래서 스크립트를 작성하기가 어렵습니다. Expect는 이 문제에 대한 해결책입니다. 프로그램에 입력을 제공하여 속일 수 있습니다.

https://stackoverflow.com/questions/8236699/script-to-change-password-on-linux-servers-over-ssh

또한 각 서버의 스크립트나 구성 파일에 비밀번호를 저장하지 않아도 된다는 요구 사항에도 도움이 됩니다. 비밀번호는 모두 중앙 컴퓨터에 저장되므로 긴밀하게 보호할 수 있습니다.

관련 정보