自宅で仕事用コンピュータ(私たちが呼ぶ名前)に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
ディレクティブを使用して、ホストを透過的にssh
3番目のホストに移動させることができます。
次の 3 つのホストがあるとします。
workstation.example.com
- これはあなたが作業している機械です。proxy.example.com
- SSH トラフィックをルーティングするマシンです。endpoint.example.com
- ここがトラフィックが終わりたい場所です。
~/.ssh/config
on に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 endpoint
sftp endpoint
scp
答え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>