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.sh
AWS2 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