我正在 bash 中编写一个脚本,将sftp
文件发送到另一台服务器。我有一个 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 evalssh-agent -s
我已经SSH_ASKPASS=~/.ssh/ask.sh
在脚本中设置了,但没有任何效果。我是否需要加载软件才能使 SSH_ASKPASS 在 AWS2 Linux 上工作?
请帮忙。
谢恩
答案1
您可以使用 ssh-agent 和 Expect 命令的组合,因为 ssh-agent 无法存储密码
#!/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