2017-08-28 39 views
18

Tôi đã xem qua thư viện tuyệt vời này xterm.js cũng là cơ sở cho thiết bị đầu cuối của Visual Studio Code. Tôi có một câu hỏi rất chung chung.Cách tạo thiết bị đầu cuối dựa trên web bằng cách sử dụng xterm.js để ssh vào hệ thống trên mạng cục bộ

Tôi muốn truy cập máy (ssh vào máy) trên mạng cục bộ thông qua thiết bị đầu cuối dựa trên web (ngoài mạng, có thể nằm trên máy chủ aws). Tôi đã có thể làm điều này trong một mạng lưới địa phương thành công nhưng tôi không thể đạt được một kết luận để làm điều đó từ Internet -> mạng nội bộ.

Như một ví dụ - 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.

ví dụ trên có thể đạt được sử dụng một số loại giải pháp nơi tôi có thể sử dụng xterm.js vì vậy mà tôi không cần phải đi để xây dựng một thiết bị đầu cuối dựa trên web? Các mối quan tâm bảo mật chính mà tôi nên lưu ý khi phơi bày các thiết bị đầu cuối theo cách này là gì?

Tôi đã suy nghĩ phù hợp với việc sử dụng máy chủ trung gian cố định giữa AWS và ip mạng cục bộ và sử dụng một số quy trình đường hầm ngược ssh để thực hiện việc này nhưng tôi không chắc liệu đây có phải là đúng hay không đơn giản hơn/cách tốt hơn để đạt được điều này.

Tôi biết đại dương số, google cloud, tất cả đều làm điều này nhưng họ phải kết nối với máy tính có ip công khai trong khi tôi có máy trong mạng cục bộ. Tôi không thực sự muốn cấu hình router để làm bất kỳ loại thiết lập.

+0

Tôi không biết làm thế nào hiện tại, nhưng cảm ơn bạn cho xtremjs)) – Alex

Trả lời

8

Sau ít nghiên cứu ở đây là mã hoạt động.

Làm theo Thư viện bạn cần hiểu cách hoạt động của Thư viện.

1) https://socket.io/

Thư viện này được sử dụng cho các gói truyền từ client tới server.

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

Thư viện này được sử dụng cho chế độ xem đầu cuối.

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

Đây là thư viện chính. được sử dụng để thiết lập kết nối với máy chủ từ xa của bạn.

Bước 1: Cài đặt 3 thư viện này trong thư mục dự án của bạn

Setp 2: Bắt đầu từ bên nút tạo ra một tập tin server.js cho ổ cắm mở

Bước 3: kết nối client socket để nút máy chủ (cả hai đều ở máy cục bộ)

Logic Tricky chỉ cách sử dụng ổ cắm và SSH2

trên Emit của ổ cắm bạn cần phải kích hoạt ssh là lệnh sử dụng thư viện ssh2.trên vào phản ứng của SSH2 (từ máy chủ), bạn cần để truyền tải gói ổ cắm cho khách hàng đó là nó

Đừng viết thêm ở đây là mã ví dụ tôi đã tải lên cho bạn

Download code

như này có sau file & thư mục

server.js 
package.json 
src/ 
xtream/ 

đầu tiên bạn cần phải cấu hình IP máy chủ của bạn, người dùng và mật khẩu hoặc cert file trên server.js. và chỉ cần nhấn nút server.js

Tái bút: Đừng quên để chạy npm install

Hãy cho tôi biết nếu bạn có bất kỳ câu hỏi!

+0

Cảm ơn Ankit, vì rất nhiều sự giúp đỡ (phần đầu tiên của dòng chảy thực sự giúp ích). Tôi sẽ kiểm tra mã quá sớm nhất có thể và cho bạn biết. Sẽ chấp nhận câu trả lời quá sớm –

+0

Chắc chắn .. xin vui lòng cho tôi biết nếu bạn có bất kỳ vấn đề hoặc câu hỏi. vui vẻ giúp đỡ. Cảm ơn –

+0

Cảm ơn @Ankitvadariya. Mã hoạt động hoàn hảo sau khi thực hiện một vài thay đổi. Bạn cũng có thể mô tả cách bạn tiếp cận cùng một điều nếu bạn có 1) - một số máy khách Linux phía sau NAT (không có IP công khai) 2) - máy chủ aws 3) - khách hàng muốn cung cấp quyền truy cập máy chủ cho thiết bị đầu cuối Vì máy khách ở phía sau NAT, máy chủ không thể trực tiếp ssh với nó. Tôi nghĩ rằng chúng ta có thể sử dụng client để ssh vào máy chủ và sử dụng đường hầm ssh ngược để có được quyền truy cập của khách hàng nhưng đó sẽ là luồng của quá trình và nó sẽ hoạt động như thế nào. Có thể thực hiện điều này bằng cách sửa đổi mã trên không? – kartik

Các vấn đề liên quan