スクリプトでSFTPを使用してリモートホストから非対話式にファイルをインポートする方法は?

スクリプトでSFTPを使用してリモートホストから非対話式にファイルをインポートする方法は?

シェルスクリプトを使用して別のサーバーからファイルを抽出したいと思います。これを行うことができるスクリプトを作成しましたが、スクリプトが非対話型で動作してパスワードを求めるプロンプトが表示されず、同じ内容をハードコードし、スクリプトに必要なコンテンツがある場合は自動的に機能するようにしたいと思います。 。

これまでこれを行ったことがありますが、FTP新しいサーバーでは接続がブロックされているか、orFTPのみ使用できます。以前のスクリプトは次のようになりましたが、パスワードなしでうまく使用して作業しました。SCPSFTPFTP

#!/bin/bash -vx
ftp -in 100.XXX.XXX.XX<<END_SCRIPT
quote USER username
quote PASS password
bin
prompt off
cd /directory/in/remote/host
lcd /directory/in/local/machine
mget *
bye
END_SCRIPT

SFTPスクリプトで似たようなことを試しましたが、インタラクティブモードでは動作しますが、できFTPないように、SFTPリモートシステムから特定のファイルをインポートするコードは次のとおりです。

#!/bin/bash -vx

path="/tmp/testanks"

sftp [email protected] <<EOT
cd $path
get Bharti*
quit
EOT

スクリプトにユーザー名とパスワードを提供して非対話型にするために、上記のコードをどのように変更しますか?

ハードコードされたパスワードを提供することはセキュリティ上の問題であることを知っていますが、今はすぐにファイルをインポートするのが心配です。安全な方法と私が望む答えを得ることができれば本当にありがとう。

答え1

そしてカール:

curl sftp://example.com/file.zip -u user:password 

これに注意してください公開鍵認証優先パスワード:

curl sftp://example.com/file.zip -u user

~/.ssh/id_rsa秘密鍵として使用しようとします。を使用して他の項目を指定できます--key

答え2

回避策は、を使用してscpリモートAuthorized_keysファイルの末尾にローカル公開鍵を追加することです。

それから

 scp [email protected]:Bharthi/* $path

localhostで.sshディレクトリを見て、.pubがない場合は、まず次のことを行います(一度だけ)。

ssh-keygen (1)
scp-copy-id [email protected] (2)
  1. すべてのデフォルト値を受け入れてメッセージが表示されたら、パスワードを入力しないでください。
  2. ユーザー名@100.XXXのパスワードを入力してください。

関連情報