動作しますが、パスワードを手動で入力する必要があります。
sftp -oStrictHostKeyChecking=no -i ./id_rsa user@host << !
cd /path
!
これはうまくいきません。コマンドは実行を完了しません。
export SSHPASS=pass
sshpass -e sftp -oStrictHostKeyChecking=no -i ./id_rsa user@host << !
cd /path
!
これも試しましたが、結果は同じでした。コマンドは実行を完了しません。
sshpass -p pass sftp -oStrictHostKeyChecking=no -i ./id_rsa user@host << !
cd /path
!
答え1
sshpass
Debian 11を実行すると、私のパスワードが承認されていないことがわかりました。opensshサーバー
そしてopenssh-sftp-サーバー。ログを調べたところ、サーバーが実際にパスワード入力を待っていることがわかりました。
何も入力しないと、パスワードプロンプトは次のようになりますsshpass
。
$ sftp -oStrictHostKeyChecking=no -i ./id_rsa me@thething
Enter passphrase for key './id_rsa':
sshpassのマニュアルページを見ると、次のオプションが見つかりました。
-P Set the password prompt. Sshpass searched for this prompt in the program's
output to the TTY as an indication when to send the password. By default
sshpass looks for the string "assword:" (which matches both "Password:" and
"password:"). If your client's prompt does not fall under either of these,
you can override the default with this option.
キーワードを使用し-P
て一致させると、この問題は解決されます。
$ echo "cd Downloads" | SSHPASS=testpass sshpass -P 'passphrase' -e sftp -oStrictHostKeyChecking=no -i ./id_rsa me@thething
Connected to thething.
sftp> cd Downloads