2017-08-28 5 views
18

私はこの素晴らしいライブラリxterm.jsを訪れました。これはVisual Studioコードの端末のベースにもなっています。私は非常に一般的な質問があります。ローカルネットワーク上のシステムにxterm.jsを使ってsshを使ってWebベースの端末を作成する方法

Webベースの端末(ネットワークに接続されていない、awsサーバ上にある可能性があります)を介して、ローカルネットワーク上のマシン(マシンにssh)にアクセスします。私はローカルネットワークでこれを正常に実行することができましたが、インターネット - >ローカルネットワークから行うことはできませんでした。一例として、

からAn aws server running the application on ip 54.123.11.98 which has a GUI with a button to open terminal. I want to open terminal of a local machine which is in a local network somewhere behind some public ip on local ip 192.168.1.7.

は、上記の例では、私は、Webベースの端末を構築するために行く必要がないように私はxterm.jsを使用できるソリューションのいくつかの並べ替えを使用して達成することができますか?このように端末を公開しているときに留意すべき重要なセキュリティ上の懸念事項は何ですか?

私は、AWSとローカルネットワークのIP間で固定された中間サーバーを使用し、これを行うために何らかの逆sshトンネルプロセスを使用することにしていると考えていましたが、これが正しい方法かどうかわかりませんこれを達成するためのよりシンプルな/より良い方法。

私はデジタル海、グーグルクラウドを知っていますが、彼らはすべてこれを行いますが、私はローカルネットワークにマシンを持っている間、パブリックIPを持つコンピュータに接続する必要があります。私は本当にセットアップを行うためにルータを設定したくありません。

+0

私は現時点ではわかりませんが、xtremjsに感謝します)) – Alex

答えて

8

いくつかの研究の後、ここで作業コードがあります。

ライブラリに続いて、その動作を理解する必要があります。

1)https://socket.io/

このライブラリは、クライアントからサーバに送信パッケージに使用されます。

2)https://github.com/staltz/xstream

このライブラリは、端末ビューのために使用されます。

3)https://github.com/mscdex/ssh2

これがメインのライブラリです。リモートサーバーとの接続を確立するために使用されます。

ステップ1:ノードへ 接続クライアントソケット:オープンソケット

ステップ3のためにserver.jsファイルを作成するノード側から スタート: は、プロジェクトフォルダ

SETP 2に、この3ライブラリをインストールします。サーバー(両方のローカルマシンにある)

トリッキーロジックsshをトリガーする必要があるだけでどのようにソケットを使用すると、ソケットのEMITのSSH2

ですssh2ライブラリを使用してコマンドを実行します。(サーバからの)SSH2の応答の上であなたはそれが

よりここに書いてはいけないのクライアントへのソケットパッケージを送信する必要があります私はあなたの持っているよう

Download code

このためにアップロードしたサンプルコードは、ファイルに&フォルダ

server.js 
package.json 
src/ 
xtream/ 

を以下の最初のあなたはserver.js上のサーバーIP、ユーザとパスワードまたは証明書ファイルを設定へ必要があります。何か質問がある場合は、私に教えてくださいnpm install

を実行することを忘れないでください:とちょうどノードserver.js

P.Sをヒット!

+0

あまりにも助けてくれてありがとうございました(フローの最初の部分は本当に助かりました)。できるだけ早くコードをテストしてお知らせします。あまりにも早く答えを受け入れるでしょう –

+0

あなたは何か問題や質問があれば教えてください。お力になれて、嬉しいです。感謝 –

+0

ありがとう@Ankitvadariya。いくつかの変更を加えた後、コードは完全に機能しました。 あなたは を持っている場合、同じことにどのようにアプローチすればいいのでしょうか?1) - パブリックIPを持たないNATの背後にある多くのLinuxクライアント 2) - awsサーバ 3) - クライアントは端末にサーバアクセスを許可する クライアントがNATの背後にあるため、サーバは直接NATに接続できません。私はクライアントを使ってサーバにsshを入れ、逆sshトンネリングを使ってクライアントのアクセスを得ることができると思うが、プロセスの流れとその動作はどうなるだろうか。上記のコードを変更してこれを行うことは可能ですか? – kartik

関連する問題