SFTPを介してサーバーにいくつかのファイルをアップロードするスクリプトを作成しようとしています。対話型 lftp セッションを開き、そこにユーザー名とパスワードを提供することで、この操作を手動で実行できます。私の考えでは、台本の場合
- (明らかな理由で)スクリプトに資格情報をハードコードしないでください。
- コマンドラインで言及しないでください。 (私は.bash_historyに含めたいのですが、資格情報は必要ありません。)
lftp
バウチャー.netrc
などを読んでください。
私はこれを動作させることができないようです。現在の回避策は、資格情報を解析し、.netrc
それをlftpスクリプトに追加して削除するラッパースクリプトです。これは手動で実行する手順をシミュレートしますが、既存の機能を再実装しても効果が悪いようです。これが機能している間、問題は残ります。
lftpはSFTP接続のために.netrcを読むことができますか?
もしそうなら、税関ポートが設定の一部である場合、特別な構文要件はありますか?に接続する必要があります。sftp://username:[email protected]:12322
答え1
ssh
最善の方法は、手順3のようにキーペアを使用してサーバーにアクセスすることです。
キーペアを作成します(まだ存在しない場合)。
ssh-keygen -t rsa -C "" -f ~/.ssh/id_rsa
公開鍵をサーバーにコピーします。
ssh-copy-id [email protected] -p 12322
サーバーへの接続:
lftp sftp://[email protected]:12322
非標準パスをキーとして使用するには!ssh-agent
またはその前にキーを追加する必要があります.ssh/config
。
答え2
~によるとlftp
マニュアルページ、~/.netrc
はいサポート/ユーザーlftp
:
~/.netrc
FTPサーバーのデフォルトのログイン名とパスワードを取得するには、このファイルを参照してください。ユーザー名はあるがパスワードはないURLを使用している場合は、ここでもパスワードが検索されます。
この記事を読んで、カスタムポートURLを使用しても問題ありません。
答え3
私は確認できるroneo.org答えは正しいですストーリーコーダーポートの指定方法を説明する説明も有効です。
.netrc
資格情報をプレーンテキストファイルに保存せずにトラフィックを暗号化する、より安全なログインオプションが必要です。
lftpでファイルを明示的に呼び出すことができる場合は、ファイルを暗号化して渡すこと.netrc
ができます。残念ながらそうすることはできません。.netrc
gpg
lftp
cURL
しかし、できることは、すべての接続情報(パスワードを含む)を含む暗号化されたFTP URL文字列を生成することですlftp
。
完全なログイン名、ポート、およびサーバーパスを持つ単一の文字列を含むプレーンテキストファイルを作成することから始めます。デフォルトではlftp
、ブックマークファイル(~/.local/share/lftp/bookmarks
)をエイリアスなしで使用すると、ブックマークファイルに保存されている内容が保存されます。
したがって、bookmarks
ファイルに次のものがある場合:
myftpserver ftp://<user>:<pass>@ftp.mysite.com:10234/path/to/files/
あなたはただ次のものを使います:
ftp://<user>:<pass>@ftp.mysite.com:10234/path/to/files/
まず、空のテキストファイルを作成します。
touch ~/.lftprc
テキストエディタを使用してファイルにftp URLを追加して、bookmarks
bash履歴のパスワードを維持します。
vi ~/.lftprc
まだ設定したことがない場合は、gpg
今すぐ設定してください。
gpg --full-generate-key
次に、次のコマンドを使用してファイルを暗号化しますgpg
。
gpg -r <GPG USER ID/EMAIL> -e ~/.lftprc
これでファイルは次のようになります~/.lftprc.gpg
。作成したファイルを削除します。
rm ~/.lftprc
Bash
フルログインURLは、デフォルトで次のように呼び出すことができる暗号化された文字列ですgpg
。
lftp $( gpg --batch -q -d ~/.bookmark.gpg )
その後、別名に変換できます。
alias lftps='lftp $( gpg --batch -q -d ~/.bookmark.gpg )'
素敵に見えるので、lftpsを選択しましたが、欲しいものは何でもできます。
HOSTNAME:~ # lftps
cd ok, cwd=/path/to/files
lftp <user>@ftp.mysite.com:/path/to/files>
私のFTPサーバーはFTPを介した明示的なTLSをサポートしているので、安全な転送のために.lftp.conf
次のことを行います。
set ssl-allow true
set ssl:ca-file "/var/lib/ca-certificates/ca-bundle.pem"
set ftp:ssl-force true
だから最終的に私はlftpがどのようにユーザーのパスワードをサーバーに渡すのか、そしてあなたがそれを理解できるかどうか知りたいのですが...
答え4
資格情報をに保存できます~/.netrc
。ファイルは次のようになります。
machine ftp.cluster.host.net (do not include 'sftp://' here)
login yournickname
password xFrPkIB8767
これで接続できます
lftp sftp://[email protected]/
ニックネームは必須ですが、パスワードはニックネームから抽出されます.netrc
。
ターミナル記録が綺麗です!
あなたもできますコマンドを直接渡す到着lftp
:
lftp -c "open sftp://[email protected]; ls"
スクリプトやbashエイリアスに非常に便利です!