2010-10-09 33 views
23

Tôi biết có một thực hiện VNC bằng cách sử dụng WebSockets (http://novnc.com) nhưng vẫn yêu cầu một máy chủ. Tôi đang tìm cách tạo một kết nối JavaScript đơn giản (không có Flash) phía máy khách đến một cổng đang chạy SSH. Tôi đoán WebSockets là cách duy nhất để đi vì nó thực hiện TCP. Bất kỳ mã ví dụ nào? Bất kỳ cách nào khác?Có thể kết nối SSH bằng JavaScript không?

Trả lời

15

Xin lỗi, với những ràng buộc của bạn (chỉ ở phía máy khách), không có cách nào để kết nối với một máy chủ SSH cũ đơn giản.

WebSockets không đồng bộ TCP. Đó là một giao thức có khung với một cái bắt tay giống như HTTP giữa máy khách và máy chủ bao gồm chính sách nguồn gốc.

Flash có thể tạo các kết nối TCP đơn giản, nhưng cũng có thực thi chính sách gốc. Cách nó thực hiện điều này là tạo một kết nối đến cùng một máy chủ trên cổng 843 và yêu cầu một tệp XML đặc biệt có chứa chính sách gốc. Nếu bạn sẵn sàng thư giãn những hạn chế của mình một chút sao cho bạn sẵn sàng chạy một WebSockets chung tới proxy TCP trên máy chủ (bất kỳ máy chủ nào) hoặc trên máy khách thì bạn có thể làm những gì bạn muốn làm. noVNC bao gồm một C và python WebSockets để TCP proxy: http://github.com/kanaka/noVNC/tree/master/utils/.

Thông tin khác bạn có thể thấy hữu ích:

+1

Câu trả lời cho điều này có thay đổi trong hai năm không? Tôi rất muốn biết nếu có điều gì mới mẻ xuất hiện! – Danny

+2

Không dành cho các ứng dụng web đơn giản. Tuy nhiên, các ứng dụng đóng gói của Chrome hiện hỗ trợ ổ cắm TCP/UDP thô: https://developer.chrome.com/apps/app_network.html Ví dụ: chúng có ứng dụng telnet ví dụ: https://github.com/GoogleChrome/chrome- app-samples/tree/master/telnet Bạn có thể mở rộng ví dụ telnet để thêm mã hóa và quản lý khóa để tạo một ứng dụng ssh. Nhưng điều này sẽ bị giới hạn đối với các ứng dụng đóng gói của Chrome chứ không phải ứng dụng web chung. – kanaka

+2

Thêm vào những điều trên, những ngày này, Chrome cũng cung cấp ứng dụng khách SSH làm ứng dụng đóng gói: https://chrome.google.com/webstore/detail/secure-shell/pnhechapfaindjhompbnflcldabbghjo – BHSPitMonkey

3

Bạn có thể xem serfish. Đó là một giải pháp để truy cập máy chủ SSH. Nhưng nếu bạn đang lưu trữ ứng dụng web của mình trên cùng một máy chủ với ssh của bạn, có các giải pháp khác như shell in a box.

+0

Cá sấu sử dụng máy chủ cho các lệnh đường hầm được nhập trong trình duyệt vào máy chủ lưu trữ ssh. shellinabox tương tự cần phải chạy trên máy chủ cho trình duyệt đầu cuối trình duyệt để làm việc. Có anyway để thi đua các thiết bị đầu cuối trên client-side bằng cách sử dụng JS mà không cần viết bất kỳ máy chủ (hoặc ssh host) bên mã? – pathikrit

4

Đối với những người vẫn đang tìm kiếm, paramikojs có thể là câu trả lời.

Tôi hiện đang gặp sự cố tương tự: Tôi cần thực thi phía máy khách SSH JS và tôi cần nó được cấp phép BSD. Alas paramikojs dường như được cấp phép GPL.

+1

Từ [readme] (https://github.com/mimecuvalo/paramikojs): * Trước khi bạn hỏi, điều này không hoạt động trên các trang web thông thường. * – Tamlyn

1

Chắc chắn có thể sử dụng trình giả lập Linux có hỗ trợ mạng đầy đủ như trình giả lập OpenRISC tuyệt vời jor1k.

Lưu ý rằng tôi đã tạo browser-tools.net, một bộ sưu tập các công cụ trong trình duyệt từ nhiều dự án khác nhau.

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