インターネットに接続されたデバイスがありますが、NAT の背後にあるため、ネットワークの外部から直接 SSH 接続することはできません。リバース SSH トンネリングによってこの問題を回避できることはすでにわかっています。
ここで、このデバイス上で netcat サーバー プロセスを実行し、ネットワークの外部から再度アクセスできるようにしたいと考えています。これを行うにはどうすればよいでしょうか?
答え1
私はこれを自分で理解することができました。SSHトンネリングは基本的にポート転送のようです。NATの背後にあるサーバーで次のコードを実行しました。
ssh -N -R 4321:localhost:1234 user@client &
client:4321
これにより、からへのトラフィックをルーティングするトンネルが設定されserver:1234
、 によって&
バックグラウンドで実行されます。引き続きサーバー上で、次を実行しました。
ncat -lk -c "python myscript.py" localhost 1234 &
これにより、netcatプロセスが実行されますmyscript.py
。これで、クライアントからnetcat経由でサーバーに接続できます。
nc localhost 4321
ncat
(クライアントにはありませんでしたが、nc
同様に機能しました。実際の使用例では、socket
Python のライブラリを使用して接続しましたが、同じように機能しました)