18

ftp + .netrc を使用している既存のスクリプトがいくつかあります。

今すぐ sftp に切り替えたいのですが、マクロ / .netrc をサポートしていないようです。

他の代替手段はありますか?

助けてください。

4

3 に答える 3

23

簡単に言えば、 、または.netrcと一緒に使用することはできません。これらの製品は、名前に「セキュア」というキーワードが含まれる OpenSSH 標準の一部です。この方法でログインを自動化することは安全な方法ではなく、標準ではこの種の自動化 (パスワードの保存) を禁止しています。間違いなく代替手段があり、実際には 3 つです。sftpscpssh.netrc

認可

最初の 2 つの選択肢のいずれについても、鍵をセットアップして交換する必要があります。run から接続しているマシンではssh-keygen、リスクはありますが、キーにパスフレーズを与えない方がはるかに簡単になります。.ssh/これで、と の2 つのファイルができましid_rsaid_rsa.pub。これらのうち、id_rsa秘密にしておくか、保護する必要があります (したがって、パスフレーズ)。pub ファイルは、実際には 1 行のテキストです。この 1 行は~/.ssh/authorized_keys、受信ホスト側のファイルに追加できます。キーは手動でファイルに追加できます。しかし、またありますssh-copy-idまさにそれを行い、ファイルのアクセス許可も処理するショートカット コマンド。キーを承認すると、適切なユーザーとして接続すると、秘密キーを持つマシンから承認された公開キーを持つマシンに接続できるようになります。でテストしssh -vます。パスフレーズを入力した場合は、その入力を求められます。そうでない場合は、自動化の準備ができています。を使用するssh-agentと、パスフレーズを 1 回入力するだけで、セッション間で秘密鍵をアクティブに保つことができます。複数のsshホップを作成している場合、エージェントを転送するオプションを使用すると、元のソース ボックスの秘密キーをssh-agent各ホップで通信できます。個人的には、これはやり過ぎだと思うので、パスフレーズを使用しないことをお勧めします。

sshsftp、および接続をパスワードやパスフレーズを入力せずに作成できるようにscpなったので、残りを自動化する準備が整いました。

代替案 1、

.netrcマクロをシェルスクリプトまたはいくつかのscpコマンドを呼び出す他のスクリプトに変換する場合は、これが推奨される代替手段です。curlこれは、またはを使用してすべての ftp 接続を自動化するのと似ていますwget。例えば:

scp -qr $USER@$REMOTE_HOST:$PATH_FILE_OR_DIR $LOCAL_PATH_FILE_OR_DIR #download
scp -qr $LOCAL_PATH_FILE_OR_DIR $USER@$REMOTE_HOST:$PATH_FILE_OR_DIR #upload
scp -pqr $USER@$REMOTE_HOST:$PATH_FILE_OR_DIR $USER@$REMOTE_HOST2:$PATH_FILE_OR_DIR #mirror between separate hosts.
ssh $USER@$REMOTE_HOST chmod 644 $PATH_FILE #set permissions

代替案 2、

sftpあなたが述べたように、expectsコマンド、オプションを使用したバッチファイル-b、またはコマンドを にパイプすることでスクリプトを作成できますsftp。これはマクロに少し似てい.netrcますが、選択肢 1 に勝る利点はありません。後者の例を示します。

#!/bin/sh
echo "OK, starting now..."
sftp -b /dev/fd/0 remotehost <<EOF
cd pub
ascii
get filename.txt
bye
EOF

代替案 3、

sftpパスワードなどの接続パラメーターを保存できるようにすることで、SSH 標準を破るプログラムを使用します。たとえば、cyberduckと AppleScript、またはFileZillaとキューを使用します。

その他の注意事項:

ホスト名に短い名前を付けたり、転送パラメーター、デフォルトのディレクトリ、デフォルトのユーザー名、および各ホストの特定の ID を設定したりするために使用できる~/.ssh/configファイルがあります。また、転送レートをより妥当なものに制限するオプションも気に入っています。-lscp

.netrcPSマクロを(代替1スタイルの)シェルスクリプトに変換するためのツールがあると思います。しかし、何も見つかりませんでした。それは小さなニッチなビジネスチャンスですか?

于 2009-09-03T16:30:40.260 に答える
2

マシンでパスワードなしの認証を使用できる場合(システム管理者によって禁止されている場合がありますが、通常は禁止されていません)、.netrcのマクロではなくシェルスクリプトでscpを使用すると便利です。ただし、リモートマシンにログインするためにパスワードを入力する必要がある場合は、「ヒアスクリプト」(EOFを含むビット)を使用して魔法をかけます。時々変更される場合は、シェルスクリプトを使用してftpスクリプトを作成できます。

于 2011-07-08T23:21:54.863 に答える
0

これを行うにはパスワードなしのログイン (ssh キー) を使用できるため、scp を調べてみてください。

SFTP でも同じ手法を使用できるかもしれませんが、わかりません。

于 2009-09-01T06:35:50.570 に答える