オフィスのコンピューターからラップトップにファイルをダウンロードしたい。
オフィスマシンをSSHで組織サーバーに接続してから、サーバーからオフィスマシンにSSH接続できます。
組織サーバーが受け入れる唯一のコマンドは、ssh、ssh1、およびssh2です。
オフィス(リモート)マシンからサーバーを介してラップトップ(ローカル)マシンにファイルをダウンロードするにはどうすればよいですか?
オフィスのコンピューターからラップトップにファイルをダウンロードしたい。
オフィスマシンをSSHで組織サーバーに接続してから、サーバーからオフィスマシンにSSH接続できます。
組織サーバーが受け入れる唯一のコマンドは、ssh、ssh1、およびssh2です。
オフィス(リモート)マシンからサーバーを介してラップトップ(ローカル)マシンにファイルをダウンロードするにはどうすればよいですか?
回答:
前の回答では、ProxyJumpディレクティブ(OpenSSH 7.3で追加)を使用して中間サーバー(通常は要塞ホストと呼ばれる)を介して接続する方法について説明していますが、コマンドライン引数としてのみ説明しています。
将来接続する予定のないマシンでない限り、最適なのはで構成すること~/.ssh/config
です。
私は次のようなファイルを置きます:
Host office-machine
Hostname yochay-machine.internal.company.local
ProxyJump bastion-machine
Host bastion-machine
Hostname organization-server.company.com
...
ProxyJumpをサポートしていない以前のバージョンのOpenSSHを使用している場合は、同等のバージョンに置き換えます。
ProxyCommand ssh -W %h:%p bastion-machine
そして、あなたのローカルsshバージョンがサポートしていない本当に古いバージョンであった場合-W
:
ssh bastion-machine nc %h %p
ただし、最後の1つには要塞マシンがnc
インストールされている必要があります。
sshの長所は、ファイルの各宛先を構成できることであり、それらは非常にうまくスタックされます。したがってoffice-machine
、直接接続であったため、すべてのツール(ssh、scp、sftp ...)でホスト名として使用することになり、ssh_configに基づいて接続する方法がわかります。またHost *.internal.company.local
、特定の要塞を通過するように、すべてのホストを終了させるようなワイルドカードを使用することもできます。これはすべてのホストに適用されます。正しく構成すると、1ホップ接続を行う場合と20ホップ接続を行う場合の唯一の違いは、接続時間が遅くなることです。
最新のOpenSSH(8.0)を使用している場合は、-J
(jump)スイッチを使用できます。
scp -J user@intermediate user@target:/path
古いバージョン(ただし、少なくとも7.3)では、コマンドラインでProxyJump
directiveを使用できます:
scp -o ProxyJump=user@intermediate user@target:/path
または、ssh_config
@Ángelの答えが示すように、ファイルで。
ProxyCommand
またはポート転送のような他のオプションがあり、古いバージョンのOpenSSHでも使用できます。これらはで説明されていないOpenSSHのサポートマルチホップログイン?
ssh -J userA@orgserv userB@officecomp cat remote/path > local/path
scp
サポートしていなくても-J
、ProxyJump
オプションをサポートするのに十分なほど新しい可能性があります。このオプションを明示的に使用する他の回答のいずれかを試してください。
ssh
変更することを提案する質問に対するすべての回答を軽deしていますconfig
。
-J user@intermediate
。
パイプラインを使用することもできます。その時は今日です。
ssh -A user@host1 ssh user@host2 cat filename > filename
あなたもアップロードできます
ssh -A user@host1 ssh user@host2 cat \\\> filename < filename
プロキシなどを含む他のソリューションもありますが、これを行う方法を知っていると便利です。
cat
!の便利な使用
ZMODEMと呼ばれる古代のプロトコルがあります。最近ではそれをサポートするプログラムはほとんどありませんが、機能する場合は非常に便利です。
まず、ラップトップの端末プログラムがZMODEMをサポートしているかどうかを確認してください。(たとえば、ZMODEMをサポートするようにiTerm2(Mac)を構成できます。サンプルスクリプトはこちらから入手できます。)
オフィスマシンで、次を実行します。 sudo apt install lrzsz
今、あなたがしなければならないのは、あなたのオフィスのマシンにsshして、実行するだけsz (filename)
です。ファイルは端末からダウンロードされます。
ユーザーのsshでの構成: ~/.ssh/config
Host *
UserKnownHostsFile=/dev/null
StrictHostKeyChecking=no
ServerAliveInterval 300
ServerAliveCountMax 2
ForwardAgent yes
Host jump server
HostName server.company.org
User root
Host jump1 server1
HostName server1.dmz.company.org
User root
ProxyJump jump
Host jump2 server2
HostName server.dmz2.company.org
User root
ProxyJump jump1
Host *.intranet.company.org
User user
ProxyJump jump2
イントラネットサーバーから3ジャンプサーバー経由で直接コピーできるようになりました。
scp user@server.intranet.company:/home/user/ ./*
これは、scpでジャンプサーバーを指定する必要がなくなったためです。
scp -3 user1@remote1:/root/file1.txt user2@remote2:/root/file1.txt
-3
オプションは、「2つのリモートホスト間のコピーがローカルホストを介して転送される」と説明されています。この質問は、ローカルホストが「remote2」にアクセスできなかったと規定していると思います。
-3
。ただし、これは、中央のマシンから最初のマシンに接続できることを前提としています。
-J
/ に対するこの利点は見当たりませんJumpHost
。@Joeが言及している制限があるため、まったく逆です。