---------- /| /| ------------
| 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
現在はデフォルトですが)はrsync
2つの方法で使用できます。
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 に対して作成されたポリシーがないことを確認できます。