SSHのみ可能なホストから別のホストにファイルをダウンロードするにはどうすればよいですか?

SSHのみ可能なホストから別のホストにファイルをダウンロードするにはどうすればよいですか?

オフィスコンピュータからラップトップにファイルをダウンロードしたいです。

マイオフィスコンピュータから組織サーバーにSSHを実行し、サーバーからマイオフィスコンピュータにSSHを実行できます。

組織サーバーで許可される唯一のコマンドは、ssh、ssh1、および ssh2 です。

サーバーを介してオフィス(リモート)コンピュータからラップトップ(ローカル)コンピュータにファイルをダウンロードするにはどうすればよいですか?

答え1

最新の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はマルチホップログインをサポートしていますか?

答え2

以前の回答では、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ホップ接続の唯一の違いは、接続時間が遅いことです。

答え3

時にはパイプのみを使用することができます。その時はまさに今日です。

ssh -A user@host1 ssh user@host2 cat filename > filename

アップロードすることもできます。

ssh -A user@host1 ssh user@host2 cat \\\> filename < filename

はい、プロキシなどに関連する他のソリューションがありますが、これを行う方法を知っておくと便利です。

答え4

という古代のプロトコルがあります。モデム:現在はサポートするプログラムがほとんどありませんが、動作するようになればとても便利です。

まず、ノートブックのターミナルプログラムがZMODEMをサポートしていることを確認してください。 (たとえば、ZMODEMをサポートするようにiTerm2(Mac)を設定できます。サンプルスクリプトが利用可能ですここ.)

オフィスのコンピュータで次を実行します。sudo apt install lrzsz

今やるべきことは、オフィスコンピュータにSSHでアクセスして実行することだけですsz (filename)。ファイルは端末からダウンロードされます。

関連情報