Cygwin에서 sshpass를 사용하면 ssh에서 여전히 비밀번호를 묻는 메시지가 표시됩니다.

Cygwin에서 sshpass를 사용하면 ssh에서 여전히 비밀번호를 묻는 메시지가 표시됩니다.

이에 따르면RedHat SSH 비밀번호 자동화 가이드나는 팔로우하고 있다예시 4: GPG첫째, 해당 가이드의 단계에 따라 pass_file내 비밀번호를 사용하여 비밀번호를 만들었습니다. 그런 다음 이것을 얻었습니다.

gpg -d -q myappserver23.sshpasswd.gpg > pass_file && sshpass -fpass_file ssh [email protected]

-fpass_file옵션과 기반 사이에 공백이 없습니다 .sshpass 매뉴얼 페이지 위의 명령을 실행하면 비밀번호를 묻는 메시지가 표시되고 올바르게 입력한 다음 sshpass전혀 사용되지 않은 것처럼 서버의 비밀번호를 묻는 메시지가 나타납니다. 간단히 말해서, 이것은 작동합니다하지만아직도 비밀번호 프롬프트가 뜹니다...

나는 옵션을 확실히 알고 있으며 이 두 가지 -q도 추가했습니다.-vvvSSH패스그리고SSH이것과 관련이 있는 것 같습니다.그리고 아니SSH패스나는 믿는다. SSH 배너 메시지 이후 수신된 디버그 메시지를 여기에 공유하겠습니다.

(...)
debug3: input_userauth_banner
----------------------------------------------------------------------------------------
Here goes ssh banner message
----------------------------------------------------------------------------------------

debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-keyex,gssapi-with-mic,password
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: C:\\Users\\myuser/.ssh/id_rsa RSA SHA256:7PAz6lsENYkfYGwFZWNf0OJ88Z9mFDMSBc+P9t+4H1k
debug3: send packet: type 50
debug2: we sent a publickey packet, wait for reply
debug3: receive packet: type 51
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: C:\\Users\\myuser/.ssh/id_dsa
debug3: no such identity: C:\\Users\\myuser/.ssh/id_dsa: No such file or directory
debug1: Trying private key: C:\\Users\\myuser/.ssh/id_ecdsa
debug3: no such identity: C:\\Users\\myuser/.ssh/id_ecdsa: No such file or directory
debug1: Trying private key: C:\\Users\\myuser/.ssh/id_ed25519
debug3: no such identity: C:\\Users\\myuser/.ssh/id_ed25519: No such file or directory
debug1: Trying private key: C:\\Users\\myuser/.ssh/id_xmss
debug3: no such identity: C:\\Users\\myuser/.ssh/id_xmss: No such file or directory
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
debug3: failed to open file:C:/dev/tty error:3
debug1: read_passphrase: can't open /dev/tty: No such file or directory
[email protected]'s password:

이 출력의 마지막 줄은 비밀번호 프롬프트입니다. 분명히 여기에 비밀번호를 입력하면 원격 서버에 로그인할 수 있지만 그것을 사용하는 이유는 무엇입니까 sshpass? 비밀번호를 입력하지 않고 로그인할 수 있게 하고 싶습니다.

개인 키 사용을 제안하지 마십시오. 주제를 이해하지만 실제 시나리오에는 적용되지 않습니다. 어떤 도움이라도 대단히 감사하겠습니다.

답변1

@KamilMaciorowski의 의견은 나에게 올바른 방향을 제시했습니다.ServerFault에 대한 유용한 답변에 따르면,윈도우자신의 것을 가져가다SSH 열기구현하다. 이 문제를 해결하려면 다음 openssh을 설치해야 합니다.시빈대신 이것을 사용하려면.

이로써 오류가 해결되었으며 이제 다음과 같이 할 수 있습니다.

$ gpg -d -q myappserver23.sshpasswd.gpg > pass_file && sshpass -fpass_file ssh [email protected] > test.txt

$ cat test.txt
/home/myuser
uid=1001(myuser) gid=1001(mygroup) groups=1001(mygroup)

PD. 여기서 사용하는 것처럼 안전하지 않습니다 gpg. 하지만 의심스럽다면,이 시도.

답변2

파일 시스템에 남아 있는 일반 텍스트 파일로 암호를 해독하는 이유는 무엇입니까? 최대관로직접 출력:

gpg -d -q myappserver23.sshpasswd.gpg | sshpass -P pass ssh -i ~/.ssh/key.pem -ttR xxx.xxx.xxx.xxx

-P pass옵션은 "비밀번호..." 또는 "비밀번호"와 같은 프롬프트를 검색하여 채웁니다.

관련 정보