비밀번호와 함께 SSH 키를 사용하여 SFTP에 대한 bash 스크립트 - SSH_ASKPASS가 작동하지 않습니다.

비밀번호와 함께 SSH 키를 사용하여 SFTP에 대한 bash 스크립트 - SSH_ASKPASS가 작동하지 않습니다.

sftp다른 서버로 파일을 보내기 위해 bash에 스크립트를 작성하고 있습니다 . SSH 키와 필요한 비밀번호가 있습니다. 변수를 사용해 보았지만 SSH_ASKPASS작동하지 않습니다.

DISPLAY=: SSH_ASKPASS=/root/.ssh/ask.sh setsid ssh-add ~/.ssh/bl_test
Enter passphrase for /root/.ssh/bl_test:

그건 작동하지 않습니다. 나도 시도했다

 echo foo | SSH_ASKPASS=/root/.ssh/ask.sh DISPLAY= ssh-add ~/.ssh/bl_test

이것은 나를 실행하는 루프를 생성합니다 ask.sh.

스크립트에서 설정한 DISPLAY=:시작 ssh_agent 평가를 설정했지만 ssh-agent -s아무것도 작동하지 않습니다. SSH_ASKPASS=~/.ssh/ask.shAWS2 Linux에서 SSH_ASKPASS가 작동하도록 하려면 소프트웨어를 로드해야 합니까?

도와주세요.

감사합니다

답변1

ssh-agent는 비밀번호를 저장할 수 없으므로 ssh-agent와 Expect 명령을 함께 사용할 수 있습니다.

#!/usr/bin/expect -f

# Variables
set PRIVATE_KEY_PATH "key.key"
set PASSPHRASE "passpass"

# start ssh-agent
eval spawn ssh-agent

# add your private key to ssh-agent
spawn ssh-add $PRIVATE_KEY_PATH

# wait input of  passphrase
expect "Enter passphrase for $PRIVATE_KEY_PATH:"

# send the passphrase
send "$PASSPHRASE\r"

# wait end of ssh-add
expect eof

관련 정보