イントラネット侵入を実現するためのSSHポート転送

イントラネット侵入を実現するためのSSHポート転送

LAN 内のマシンは外部ネットワークにアクセスできますが、外部ネットワークは内部ネットワークにアクセスできません。内部ネットワークがインターネットにアクセスすると外部ネットワークのアドレスを特定できるため、外部ネットワークはローカル エリア ネットワーク内の特定のアドレスを特定することはできません。 (IP アドレスは制限されています) 外部ネットワークにアクセスするときにこのリンクを開いたままにしておくと、このリンクは道路を構築するのと同じになり、内部ネットワークのデータが外に出て、外部ネットワークのデータが入ることができます。SSH もこの方式を使用します。

sshコマンドを使用してパブリックネットワークサーバーに接続する

1. まず、外部サーバーのsshd設定ファイルを編集します

vim /etc/ssh/sshd_config
#GatewayPortsスイッチをオンにします。GatewayPorts yes
変更を有効にするには、sshd サービスを再起動します (コマンドは Linux のバージョンによって異なる場合があります)
systemctl sshd を再起動します 

2. コマンド

ssh -NTf -R <ローカルホスト>:<ローカルポート>:<リモートホスト>:<リモートポート> user@host

local-host は省略できます。例: ssh -NTf -R 8888:127.0.0.1:8080 root@host

3. パラメータの説明

-C はデータの圧縮を有効にします
-f バックグラウンドで実行
-N はリモートホストに接続するだけで、リモートシェルを開かないことを意味します。
-R リモートサーバー、リバースプロキシへのポートのバインド
-L ポートをローカルクライアントにバインドし、プロキシを転送する
-T この接続にTTYを割り当てない
-NTは、このSSH接続がデータの転送にのみ使用され、リモート操作は実行されないことを意味します。

SSH接続を開いたままにする

通常、ssh を使用してサーバーに接続する場合、長時間操作が行われないと、接続は閉じられます。

方法1: クライアントを設定する

1) ユーザーレベルの設定

vim ~/.ssh/config (configがない場合は作成してください)

2) グローバル設定

ssh_config は、

いずれかを選択し、次のパラメータを追加します。

#60秒ごとに空のパケットをサーバーに送信します。 ServerAliveInterval 60
#2回以上失敗した場合は切断します ServerAliveCountMax 2
#転送が失敗した後に終了して接続の再確立を容易にする ExitOnForwardFailure yes

一時的な書き込み方法(推奨、他に影響を与えない)

ssh -o ServerAliveInterval=30 ルート@ホスト
ssh -NTf -R 8888:127.0.0.1:8080 root@host -o ServerAliveInterval=30 -o ServerAliveCountMax=2

方法2: サーバーの設定

vim /etc/ssh/sshd_config
#30秒ごとに、サーバーはクライアントにハートビートを送信します ClientAliveInterval 30
# 3 回のハートビートで応答がない場合、クライアントは切断されたとみなされます ClientAliveCountMax 3

方法3: シェルスクリプトを使用する

myAutoSSH.sh をタッチします
SSH接続をRSAパスワードフリー認証に設定しているため、ここでのロジックではパスワードは必要ありません。

SSHパスワード不要のログイン方法

ながら(1)
する
  ssh -NTR <ローカルホスト>:<ローカルポート>:<リモートホスト>:<リモートポート> user@host
終わり

切断後すぐに接続できるようにするには、-f パラメータを削除します。そうしないと、無限ループになります。

方法4: autosshを使用する

autosshソフトウェアをダウンロードする必要があり、操作はsshを直接使用するのとほぼ同じです。

-Mは監視ポートであり、コマンドへの応答があるかどうかを監視し、接続を維持するのに役立ちます。

autossh -M 5678 -NTR <ローカルホスト>:<ローカルポート>:<リモートホスト>:<リモートポート> user@host

ソフトウェアをダウンロードするのは好きではありません。インストールされるソフトウェアが乱雑なものが多く、構成を変更するのも好きではありません。変更すると他の人の使用に影響が出るのではないかと心配なので、クライアントの一時構成方法を使用するのが好きです。

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Linux SSHポートを転送する3つの方法
  • SSH ポート転送、ローカル ポート転送、リモート ポート転送、動的ポート転送の詳細
  • SSHリモートログインとポート転送の詳細な説明
  • SSH ポート転送とは何ですか?何の役に立つの?

<<:  Reactのdiffアルゴリズムの詳細な分析

>>:  MySQL/MariaDB ルートパスワードリセットチュートリアル

推薦する

JavaScript におけるブラウザ互換性の問題について簡単に説明します

ブラウザの互換性は、実際の開発では見落とされがちな最も重要な部分です。古いバージョンのブラウザの互換...

Docker ベースの Redis マスタースレーブ クラスタの実装

目次1. Redisイメージを取得する2. 6つのRedisコンテナを作成する3. Redisコンテ...

MySQLスレーブのメンテナンスに関する経験の共有

序文: MySQL マスター/スレーブ アーキテクチャは、最も一般的に使用されるアーキテクチャ セッ...

MySQL ロック制御同時実行方法

目次序文1. 楽観的ロックバージョンフィールドを追加する2. 悲観的ロック読み取りロック完全なテーブ...

デザイナーが再びハマーの公式サイトに不満を述べる

昨年、この公開書簡は大ヒットし、羅永浩氏を驚かせた。今日、著者が新しい章を発表するとは思ってもみなか...

Vue のリスナーの基本的な使用例

目次序文1. リスナーの基本的な使い方2. リスナー形式3. ページに入るとすぐに監視とディープモニ...

Docker チュートリアル: コンテナの使用 (簡単な例)

Docker を初めて使用する場合は、コンテナの管理を始めるために習得する必要がある基本的なコマン...

HTML はテキストの外側に省略記号を表示します...テキストオーバーフローによって実装されます

div または span に同時に CSS を適用する必要があります。コードをコピーコードは次のとお...

Nginx の break と last の違いの詳細な分析

まずは違いについて話しましょう最後に、書き換えられたルールは、次の場所と一致させるために書き換えられ...

MySQL データベースのインポートとエクスポートのデータ エラーの解決例の説明

データのエクスポートエラーを報告する 「secure_file_priv」のような変数を表示します。...

「いいね!」機能では MySQL と Redis のどちらを使用すればよいでしょうか?

目次1. 初心者が陥りがちな間違い2. Iteratorのremove()メソッドを使用する3. f...

GNU Parallelの具体的な使用法

それは何ですか? GNU Parallel は、1 台以上のコンピュータでコンピューティング タスク...

ウェブサイトの画像にグレー効果を加える3つの方法

私はグレースケールの画像の方が芸術的に見えると思うので、いつもグレースケールの画像を好んで使っていま...

Linux システムでキャッシュをクリアする方法の概要

1) キャッシュメカニズムの紹介Linux システムでは、ファイルシステムのパフォーマンスを向上させ...