これは、sftp ではなく ssh を使用して目標を達成する方法に関する回答です。これはまだsshツールチェーンを使用しているため、OPに受け入れられる可能性があります。
この手法は、ssh がホスト マシンに提示された秘密鍵に基づいてコマンドを実行できるようにする ssh の機能を使用しています。ホストはそのキーを確認すると、関連するコマンドを実行します。コマンドには、ファイルをダンプする「cat」を使用します。
- このような行を追加します
~mr_user/.ssh/authorized_keys2
command="/usr/bin/cat ~/sshxfer/myfile.tar.gz.uu",no-port-forwarding ssh-dss xxxPUBLIC_KEYxxx mr_user@tgtmach
- 次のようにファイルに入力します。
uuencode -m myfile.tar.gz /dev/stdout >~mr_user/sshxfer/myfile.tar.gz.uu
- ターゲット マシン上で次のコマンドを実行して、ファイルを転送します。
ssh -i ~/keys/privatekey.dsa mr_user@srcmach |sed -e's/
//g' |uudecode >myfile.tar.gz
そのコマンドのトリッキーな部分は、.uu ファイルから改行を削除するために sed コマンドに改行があることです。
転送するファイルの名前を渡す方法が見つからなかったため、転送するファイルごとにキーを作成する必要がありました。転送したいファイルが 2 つしかなかったので、これは私のユース ケースでは問題ありませんでした。