設定ファイルからの SSH リバース トンネル

設定ファイルからの SSH リバース トンネル

CLIパラメータLocalForwardとして機能するようなsshクライアント設定ディレクティブを探しています-Lしかしパラメータ-R

要約問題の詳細

データ:

repoServer -> myComputer -> NAT -> stagingServer

インターネットに公開されていないローカル Git リポジトリ サーバーと、リポジトリをデプロイする必要があるリモート ステージング サーバーがあります。

これを行うには、リバース ソケットを使用してリモート ステージング サーバーに SSH 接続します。

現在の構成ぼくのコンピュータ:

ファイル:~/.ssh/config

Host StagingServer
  Hostname staging.acme.com
  User username
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_username
  ForwardAgent yes

私が実行しているもの: ssh StagingServer -R 8022:repository.local:22

現在の構成ステージングサーバー:

ファイル:~/.ssh/config

Host repository
  Hostname localhost
  User git
  Port 8022
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_deployer

実行できるもの: git clone git@repository:myProject.git

すべてはうまくいきましたが...最後に

質問:

sshクライアントの設定ファイル(~/.ssh/config)でリバーストンネルを開くように指定して、追加する必要がないようにすることは可能ですか?-R 8022:repository.local:22

答え1

明らかに、探しているのは RemoteForward です。詳細は ssh_config ドキュメントで確認できます...

ドキュメンテーション:参考: (RemoteForward を検索してください)。説明は不要です。

リモートフォワード

リモート マシンの TCP ポートを、ローカル マシンから指定されたホストとポートにセキュア チャネル経由で転送することを指定します。最初の引数は [bind_address:]port、2 番目の引数は host:hostport でなければなりません。IPv6 アドレスは、アドレスを角括弧で囲むか、代替構文 [bind_address/]port および host/hostport を使用して指定できます。複数の転送を指定でき、コマンド ラインで追加の転送を指定できます。特権ポートは、リモート マシンに root としてログインしている場合にのみ転送できます。

次に、ぼくのコンピュータ次のように変わります:

ファイル:~/.ssh/config

Host StagingServer
  Hostname staging.acme.com
  User username
  PreferredAuthentications publickey
  IdentityFile ~/.ssh/id_username
  ForwardAgent yes
  RemoteForward 8022 repository.local:22

関連情報