オフィスのコンピューターからラップトップにファイルをダウンロードしたい。
オフィスのマシンを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
ただし、この最後のものでは、要塞マシンにnc
がインストールされている必要があります。
Sshの優れた点は、ファイルの各宛先を構成できることです。それらは非常にうまくスタックします。したがって、すべてのツール(ssh、scp、sftp ...)のホスト名としてoffice-machine
を直接接続していたので、ssh_configに基づいて接続する方法がわかります。 Host *.internal.company.local
のようなワイルドカードを使用して、すべてのホストを特定の要塞を通過するように終了させることもできます。これは、すべてのホストに適用されます。正しく構成されていれば、1ホップ接続と20ホップ接続の違いは、接続時間が遅くなることだけです。
最近のOpenSSH(8.0)を使用している場合は、 -J
(ジャンプ)スイッチ :
scp -J user@intermediate user@target:/path
古いバージョン(ただし7.3以上)では、コマンドラインで ProxyJump
ディレクティブ を使用できます。
scp -o ProxyJump=user@intermediate user@target:/path
またはssh_config
ファイル、@Ángelの回答が示すとおり。
ProxyCommand
やポート転送などの他のオプションがあり、古いバージョンのOpenSSHでも使用できます。これらは OpenSSHはマルチホップログインをサポートしていますか? でカバーされています。
パイプラインを使用することもできます。その時が今日です。
ssh -A user@Host1 ssh user@Host2 cat filename > filename
あなたもアップロードできます
ssh -A user@Host1 ssh user@Host2 cat \\\> filename < filename
ええ、プロキシなどを含む他のソリューションがありますが、これを行う方法を知っていると便利です。
ProxyJump
構成を使用します。
ProxyJump
1つ以上のジャンププロキシを[user @] Host [:port]またはssh URIとして指定します。複数のプロキシはコンマ文字で区切ることができ、順次アクセスされます。このオプションを設定すると、最初に指定されたProxyJumpホストにssh(1)接続を確立し、次にそこから最終的なターゲットにTCP転送を確立することにより、ssh(1)がターゲットホストに接続します。
scp -o ProxyJump=user@intermediate user@target:/path
[〜#〜] zmodem [〜#〜] と呼ばれる古いプロトコルがあります。最近はいくつかのプログラムでサポートされていますが、機能する場合は非常に便利です。
まず、ラップトップのターミナルプログラムがZMODEMをサポートしているかどうかを確認します。 (たとえば、ZMODEMをサポートするようにiTerm2(Macの場合)を構成できます。サンプルスクリプトが利用可能です here )。
オフィスマシンで、次を実行します:_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
これで、イントラネットサーバーからジャンプサーバーに直接コピーできます。
scp [email protected]:/home/user/ ./*
Scpでジャンプサーバーを指定する必要がなくなったため、これを優先します。
scp -3 user1@remote1:/root/file1.txt user2@remote2:/root/file1.txt