scp
現在、ローカルコンピュータのSSHキーを使用してあるサーバーから別のサーバーにファイルを転送しようとしています。
現在使用しているコマンドは次のとおりです。
sudo scp -r -o "ForwardAgent yes" <new_folder> <second-server-path>
私はフォローしましたこのgithubドキュメント私のSSHエージェントが2番目のサーバーの端末に転送されたことを確認しました。
-o "ForwardAgent yes"
~からこの参照man scp
しかし、私の参照には表示されません。
しかし、これがすべて行われた後でも、コマンドは依然としてパスワードを求めます(私たちはこれを避けようとしています)。 SSH配信を使用する方法についてのアイデアはありますか?
答え1
scp
プロキシ転送はサポートされていません。(コードで無効にするためにハードコードされています)したがって、これはあなたが試しているものと異なる場合があります。問題は、接続が
sudo
環境ssh-agent
変数SSH_AUTH_SOCK
(echo $SSH_AUTH_SOCK
)に格納され、その変数が実行中に持続しないため、sudo
2つの可能性があります。sudo
を使用しないでくださいscp
。scp
通常の場所で実行し、sudo cp
目的の場所でファイルを実行します。環境保護を実施します
sudo
。-E
スイッチ変数を使用してください。sudo scp -r <new_folder> <second-server-path>
-3
ホスト(プロキシにアクセスできる場所)で2回認証される2つのサーバー間でファイルをコピーする場合は、スイッチを使用してください。
答え2
OpenSSH 8.4(2020年9月27日リリース)では、scpとsftpはプロキシ配信のサポートを追加しました。
https://www.openssh.com/txt/release-8.4
- scp(1)、sftp(1): scp および sftp でプロキシ転送を明示的にイネーブルにするには、-A フラグを許可します。 ssh_configが有効になっていても、デフォルトではフォワードプロキシはありません。
警告する!ジャンプホストが破損したり、中間者攻撃の影響を受けたときにプロキシ転送を使用することはセキュリティ上の問題です。
ジャンプホストを使用してローカルコンピュータから内部ネットワークにファイルをコピーする場合は、ターゲットサーバーへの接続がエンドツーエンドで暗号化され、ジャンプホストがアクセスできないため、プロキシ転送の代わりにProxyJumpを使用することをお勧めします。プロキシを使用するか、データを読み取ります。
ジャンプホストを使用するscpコマンドの例:
scp -o 'ProxyJump your.jump.host' myfile.txt remote.internal.host:/my/dir
修正する:
OpenSSH 8.4では、リモート間のファイル転送のためのscpとsftpへのプロキシ転送が追加されました。
過去には、最初のホストで資格情報を提供する必要があり、トラフィックはローカルシステムを介してルーティングされる必要がありました。
OpenSSH 8.4 scp と sftp はプロキシ転送が可能になりました。
scp -A user1@remote1:/home/user1/file1.txt user2@remote2:/home/user2/file1.txt