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