使用具有密码的 ssh 密钥将 bash 脚本写入 sftp - SSH_ASKPASS 不起作用

使用具有密码的 ssh 密钥将 bash 脚本写入 sftp - SSH_ASKPASS 不起作用

我正在 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

相关内容