バッチスクリプトを使用してsftpサイトからファイルをダウンロードしようとしています。次のエラーが表示されます。
Permission denied (publickey,password,keyboard-interactive).
Couldn't read packet: Connection reset by peer
コマンドを実行する場合:
sftp -b /home/batchfile.sftp <user>@<server ip>:<folder>
batchfile.sftp
には次のデータが含まれます。
password
lcd [local folder]
cd [sftp server folder]
get *
bye
注:プロンプトで次のように実行すると機能します
sftp <user>@<server ip>:<folder>
しかし、パスワードを自動的に入力する機能が必要です。
Sshpassプログラムをインストールする必要があります。次に:
sshpass -p YOUR_PASSWORD sftp -oBatchMode=no -b YOUR_COMMAND_FILE_PATH USER@Host
明らかに、公開鍵認証を設定する方が良いでしょう。何らかの理由でそれが不可能な場合にのみ、これを使用してください。
実行するコマンドのヒープを生成し、そのスクリプトを端末から呼び出す場合は、次を試すことができます。
sftp login@Host < /path/to/command/list
その後、(通常どおり)パスワードを入力するように求められますが、スクリプト内のすべてのコマンドはその後実行されます。
これは明らかにcron
ジョブで使用できる完全に自動化されたオプションではありませんが、端末から使用できます。
-vオプションを指定してsftpを実行することをお勧めします。何が起こっているかを推測するのがずっと簡単になります。
マニュアルには次のように明記されています。
最終的な使用形式では、-bオプションを使用した自動セッションが可能です。そのような場合、接続時にパスワードを入力する必要をなくすために非対話型認証を設定する必要があります(詳細についてはsshd(8)およびssh-keygen(1)を参照)。
つまり、公開鍵認証を確立する必要があります。その後、バッチスクリプトを実行できるようになります。
追伸バッチファイルにパスワードを入力するのは間違っています。
PSFTP -b path/file_name.sftp user@IP_server -hostkey 1e:52:b1... -pw password
ファイルの内容は次のとおりです。
lcd "path_file for send"
cd path_destination
mput file_name_to_send
quit
ホストキーを実行するには:
psftp user@IP_SERVER
あなたはバッチファイルに言及していますが、Windowsシステムについて話していると仮定して正しいですか?その場合、sshpassを使用できず、別のオプションに切り替える必要があります。
正反対の哲学に従う2つのそのようなオプションは次のとおりです。
いずれにしても、パスワードからPKI認証に切り替えることを強くお勧めします。