想像する
私の産業用PCには2つのオペレーティングシステム(仮想マシン)があります。
- PLCコントローラと通信するリアルタイムオペレーティングシステム
- 汎用Linux(Ubuntu 20.04)の展開
2 つのオペレーティング システム間で利用可能な唯一の接続は、仮想ネットワーク経由です。
仮想ネットワーク
- Linuxホストが
192.168.3.1
IPアドレスに設定されました。 - RTOSホストが
192.168.3.2
IPアドレスに設定されました。
データ
8580
PLCコントローラによって生成されたデータは、Linuxホストにアクセスできるポートによって制御および設定されます。つまり、192.168.3.2:8580
(ポートで利用可能なRTOSでOPC-UAサーバーを実行する8580
)
必要
8580
エンドユーザーがDHCPが提供するLinuxシステムのIPアドレスを介してOPC UAサーバーからデータを読み取るためにRTOSのポートにアクセスできるように、LinuxシステムにSSHトンネルを作成したいと思います。
エンドユーザーはここからデータを読み取ることができます<IP-address-PC>:8580
(IP-address-PC
仮想ネットワークと同じではありませんが、DHCPサーバーから)。
しかし、私は安全で予約されたセッションこのトンネルから。
安全で予約されたセッション
- トンネルの作成時間は制限する必要があります。
- トンネルが作成されたら、次のものを許可する必要があります。たった一度の出会い
- セッションが終了するとトンネルは閉じます。
予備調査
私は経験したwikibooks for OpenSSH Tunneling Chapter
使用すると言われています。単一の中間ホストによるトンネリングこれがトリックを行うようです
崩れる
ssh -f -g -L 8580:192.168.3.2:8580 admin@localhost sleep 60
-f
:バックグラウンドでプロセスを実行する
-g
:リモートユーザーがローカルポート(Linuxでは8580)にアクセスできるようにします。
-L
:ローカルポート転送、RTOSで何が起こっても192.168.3.2:8580
ここに転送されます。
admin@localhost
:RTOSにはSSHがないことがわかったので、このトンネルを維持する唯一の方法はへの接続を維持することですlocalhost
。コマンドを初めて実行するときは、まだパスワードを入力する必要があります。
sleep 60
:ユーザーがサーバーに接続しようとするまで60秒間待機し、接続できない場合はトンネルを閉じます。
タイミングトンネルの問題を解決したようですsleep 60
。
sshd_config
とセッション
1つのセッションしか使用できないようにトンネルを設定したいと思います。これを制御できますか?
上記の手順を設定でどのようにコード化できますかsshd_config
?一度ユーザーは誰ですかadmin
?
編集する
一部の特定の要件に応じて、ユーザーはssh
実際にRTOSからデータを取得しようとすると上記のコマンドを手動でトリガーします。特定の状況でSSHトンネルを閉じることができるメカニズムを探しています。非アクティブ一定時間が経過した後。
ほとんどの場合、ユーザーは次のことを望むことができます。現れるOPC-UAサーバーのデータを入力して満足している場合は、セキュリティ上の理由でトンネルを閉じます。