シェルスクリプトを使用して別のサーバーからファイルを抽出したいと思います。これを行うことができるスクリプトを作成しましたが、スクリプトが非対話型で動作してパスワードを求めるプロンプトが表示されず、同じ内容をハードコードし、スクリプトに必要なコンテンツがある場合は自動的に機能するようにしたいと思います。 。
これまでこれを行ったことがありますが、FTP
新しいサーバーでは接続がブロックされているか、orFTP
のみ使用できます。以前のスクリプトは次のようになりましたが、パスワードなしでうまく使用して作業しました。SCP
SFTP
FTP
#!/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
答え2
回避策は、を使用してscp
リモートAuthorized_keysファイルの末尾にローカル公開鍵を追加することです。
それから
scp [email protected]:Bharthi/* $path
localhostで.ssh
ディレクトリを見て、.pubがない場合は、まず次のことを行います(一度だけ)。
ssh-keygen (1)
scp-copy-id [email protected] (2)
- すべてのデフォルト値を受け入れてメッセージが表示されたら、パスワードを入力しないでください。
- ユーザー名@100.XXXのパスワードを入力してください。