39

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

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

4

6 に答える 6

23

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

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

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

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

于 2014-02-06T00:47:53.123 に答える
1

-v オプションを付けて sftp を実行することをお勧めします。何が起こっているのかを理解するのがはるかに簡単になります。

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

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

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

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

于 2013-07-21T00:58:33.403 に答える
1

コマンド pscp を使用して、強制的に sftp プロトコルを通過させる必要があります。pscp は、ssh 経由で Linux サーバーに接続するためのソフトウェアである PuttY をインストールすると、自動的にインストールされます。

pscp コマンドがある場合、コマンド ラインは次のようになります。

pscp -sftp -pw <yourPassword> "<pathToYourFile(s)>" <username>@<serverIP>:<PathInTheServerFromTheHomeDirectory>

これらのパラメーター (-sftp および -pw) は、scp ではなく pscp でのみ使用できます。フォルダー内のすべてを再帰的にアップロードする場合は、-r を追加することもできます。

于 2020-07-31T08:46:02.167 に答える
0

あなたはバッチファイルについて言及していますが、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 認証に切り替えることを強くお勧めします。

于 2014-10-12T16:12:22.680 に答える