web-dev-qa-db-ja.com

sftpバッチファイルを使用してパスワードを送信する方法

バッチスクリプトを使用して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>

しかし、パスワードを自動的に入力する機能が必要です。

32
judith

Sshpassプログラムをインストールする必要があります。次に:

sshpass -p YOUR_PASSWORD sftp -oBatchMode=no -b YOUR_COMMAND_FILE_PATH USER@Host

明らかに、公開鍵認証を設定する方が良いでしょう。何らかの理由でそれが不可能な場合にのみ、これを使用してください。

42
Joe Van Dyk

実行するコマンドのヒープを生成し、そのスクリプトを端末から呼び出す場合は、次を試すことができます。

sftp login@Host < /path/to/command/list

その後、(通常どおり)パスワードを入力するように求められますが、スクリプト内のすべてのコマンドはその後実行されます。

これは明らかにcronジョブで使用できる完全に自動化されたオプションではありませんが、端末から使用できます。

17
Tigger

-vオプションを指定してsftpを実行することをお勧めします。何が起こっているかを推測するのがずっと簡単になります。

マニュアルには次のように明記されています。

最終的な使用形式では、-bオプションを使用した自動セッションが可能です。そのような場合、接続時にパスワードを入力する必要をなくすために非対話型認証を設定する必要があります(詳細についてはsshd(8)およびssh-keygen(1)を参照)。

つまり、公開鍵認証を確立する必要があります。その後、バッチスクリプトを実行できるようになります。

追伸バッチファイルにパスワードを入力するのは間違っています。

1
akond
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
0
user10558384

あなたはバッチファイルに言及していますが、Windowsシステムについて話していると仮定して正しいですか?その場合、sshpassを使用できず、別のオプションに切り替える必要があります。

正反対の哲学に従う2つのそのようなオプションは次のとおりです。

  • psftp:バッチスクリプト内から呼び出すことができるコマンドラインツール。 psftpはPuTTYパッケージの一部であり、http://www.chiark.greenend.org.uk/~sgtatham/PuTTY/download.htmlにあります。
  • Syncplify.me FTPスクリプト:Windows用のスクリプト可能なFTP/SおよびSFTPクライアント。暗号化された「プロファイルファイル」にパスワードを保存できます。こちらhttp://www.syncplify.me/products/ftp-script/をご覧ください

いずれにしても、パスワードからPKI認証に切り替えることを強くお勧めします。

0
FjodrSo