パスワードで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

おすすめ記事