비밀번호가 포함된 SFTP(한 줄 명령)

비밀번호가 포함된 SFTP(한 줄 명령)

작동하지만 비밀번호를 수동으로 입력해야 합니다.

sftp -oStrictHostKeyChecking=no -i ./id_rsa user@host << !
  cd /path
!

이것은 작동하지 않습니다. 명령이 실행을 완료하지 않습니다.

export SSHPASS=pass
sshpass -e sftp -oStrictHostKeyChecking=no -i ./id_rsa user@host << !
  cd /path
!

이것도 시도했지만 결과는 동일했습니다. 명령이 실행을 완료하지 않습니다.

sshpass -p pass sftp -oStrictHostKeyChecking=no -i ./id_rsa user@host << !
  cd /path
!

답변1

sshpassDebian 11을 실행할 때 내 비밀번호가 승인되지 않은 것으로 나타났습니다 .openssh 서버 그리고openssh-sftp-서버. 로그를 살펴본 결과 서버가 실제로 비밀번호 입력을 기다리고 있음을 확인할 수 있었습니다.

아무 문자도 입력하지 않으면 비밀번호 프롬프트는 다음과 같습니다 sshpass.

$ sftp -oStrictHostKeyChecking=no -i ./id_rsa me@thething
Enter passphrase for key './id_rsa':

sshpass 매뉴얼 페이지를 보면 다음 옵션을 찾았습니다.

-P    Set  the  password prompt. Sshpass searched for this prompt in the program's
      output to the TTY as an indication when to send  the  password.  By  default
      sshpass  looks for the string "assword:" (which matches both "Password:" and
      "password:"). If your client's prompt does not fall under either  of  these,
      you can override the default with this option.

키워드를 사용 -P하고 일치시키면 이 문제가 해결됩니다.

$ echo "cd Downloads" | SSHPASS=testpass sshpass -P 'passphrase' -e sftp -oStrictHostKeyChecking=no -i ./id_rsa me@thething
Connected to thething.
sftp> cd Downloads

관련 정보