SSHトンネルを介したrsync

SSHトンネルを介したrsync
----------         /|                      /|             ------------
|  Home  |        | |                     | |             |    Work   |
|        |--------| |---------------------| |-------------|           |
|ssh-serv|   Firewall:Port-22=open     Firewall           |           |
----------        | |                     | |             ------------
                  |/                      |/

上の写真のシーンはこんな感じです。

ワーカーは仕事用コンピュータにアクセスでき、ホームSSHサーバーも設定されています。従業員はPC@Homeから仕事用コンピュータにアクセスしようとしますが、会社のポリシーによってFirewall@Workを介したアクセスは制限されますが、リバースSSHトンネルを介して接続することは許可されます。したがって、ワーカーはWorkstation @ Workで次のコマンドを実行します。

ssh -fN -R 19999:localhost:22 Home-user@Home

これで、PC@Home で次のコマンドを実行し、Workstation@Work の SSH サーバーに接続できます。

ssh -v Work-user@localhost -p 19999

ワーカーは、rsyncを使用して既存のトンネルを使用して自分のPC@Homeから自分のワークステーション@Workにディレクトリをコピーできますか?

答え1

あなたが探している機能は接続共有だと思います。ファイルに以下を追加します$HOME/.ssh/config

ControlMaster auto
ControlPath /tmp/ssh_mux_%h_%p_%r

抜粋#1SSHでできますか?リモートサーバーを操作するための生産性のヒント

幸いなことに、OpenSSHには、接続サーバーに他の端末をすばやくインポートする機能である接続共有があります。

抜粋 #2

共有接続は複数のターミナルウィンドウに役立つだけでなく、リモートサーバー間でファイルを簡単にコピーすることもできます。 SSHを介してサーバーに接続し、scpコマンドを使用してファイルをコピーすると、scpは既存のSSH接続を利用します。 ...接続は、rsync、git、およびSSHを使用する他のコマンドとも共有されます。つながる

引用する

答え2

コマンドを制御できますssh(厳密に言えば、rshこのコマンド(ssh現在はデフォルトですが)はrsync2つの方法で使用できます。

  • RSYNC_RSH環境変数の設定
  • -e旗を通って

ssh必要なすべてのフラグをリンクするようにこれらのいずれかを設定できます。

環境変数を介して:

home$ RSYNC_RSH="ssh -p 19999"
home$ rsync somelocalfile Work-user@localhost:~

フラグによる-e:

home$ rsync -e "ssh -p 19999" somelocalfile Work-user@localhost:~

答え3

トンネルなどの複雑なSSH設定を処理する簡単な方法は次のとおりです。~/.ssh/config文書。たとえば、ssh -fN -R 19999:localhost:22 Home-user@Homeトンネルを作成してssh -v Work-user@localhost -p 19999使用できると確信している場合は、次のエイリアスを作成します。

Host work-tunnel
Hostname Home
Username Home-user
RemoteForward 19999 localhost:22

Host workstation
Hostname localhost
Username Work-user
Port 19999

ssh -fN work-tunnel次に、Tunnel設定を実行し、ssh workstationを使用してワークステーションにログインします。

他のアプリケーションに関する限り、workstationこれはSSHを介して接続する他のアプリケーションと同じホストです。彼らはSSHが後ろから何をしているのか気にしません。したがって、いつものように使用できます。たとえば、rsync somefile workstation:somedirファイルをワークステーションにコピーします。

答え4

はい、ワーカーはポート22でSSHを介してアクセスしているため、SSH入出力はファイアウォールを介して許可されます。ファイアウォールのアクセスリストで、SSH に対して作成されたポリシーがないことを確認できます。

関連情報