パスワードを含む単一行コマンド(SFTP)

パスワードを含む単一行コマンド(SFTP)

動作しますが、パスワードを手動で入力する必要があります。

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

sshpassDebian 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

関連情報