仲介機を介してscpする方法は? [コピー]

仲介機を介してscpする方法は? [コピー]

自宅で仕事用コンピュータ(私たちが呼ぶ名前)にSSHで接続するには、C次の手順を実行する必要があります。

ssh -t user@B ssh C

Bは自宅で接続できるサーバーですが、CはBにのみ接続できます。これはうまくいきます。

Cのファイルを自宅のコンピュータにコピーするには、自宅のscpコンピュータでどのコマンドを実行する必要がありますか?

答え1

私はあなたに以下を提案します.ssh/config

Host C
    User user
    ProxyCommand ssh -W %h:%p user@B

ホストBが信頼できず、scpとsftpで動作している場合は、もはや安全ではありません。

答え2

で述べたようにこの回答、このProxyCommandディレクティブを使用して、ホストを透過的にssh3番目のホストに移動させることができます。

次の 3 つのホストがあるとします。

  • workstation.example.com- これはあなたが作業している機械です。
  • proxy.example.com- SSH トラフィックをルーティングするマシンです。
  • endpoint.example.com- ここがトラフィックが終わりたい場所です。

~/.ssh/configon にworkstation以下を追加します。

Host endpoint
    User endpointUser # set this to the username on the endpoint host
    HostName endpoint.example.com
    ProxyCommand ssh [email protected] nc %h %p 2> /dev/null

proxyホストシステムにnc(netcat)がインストールされていることを確認してください。

その後、プロキシホストを介してそのシステムに透過的にプロキシを使用できますworkstation。動作します。ssh endpointsftp endpointscp

答え3

認証に証明書を使用する必要がある場合(通常はAWS環境では)、これは可能で比較的簡単です。

次のコマンドは、server2のRemotePathからコンピュータのlocalPathに直接ファイルをコピーします。内部的には、scp 要求は server1 を介してプロキシされます。

scp -i user2-cert.pem -o ProxyCommand="ssh -i user1-cert.pem -W %h:%p user1@server1" user2@server2:/<remotePath> <localpath>

パスワード認証を使用している場合は、以下を試してください。

scp -o ProxyCommand="ssh -W %h:%p user1@server1" user2@server2:/<remotePath> <localpath>

両方のサーバーで同じユーザー資格情報を使用している場合:

scp -o ProxyCommand="ssh -W %h:%p commonuser@server1" commonuser@server2:/<remotePath> <localpath>

関連情報