Câu hỏi sử dụng chuyển tiếp x11 với ssh và vnc?


Tôi đang làm việc trên một cụm từ xa thông qua ssh với tùy chọn -X, bởi vì tôi cần phải hình dung dữ liệu và đồ thị, qua một giao thức VPN. Đôi khi do sự bất ổn của kết nối internet, tôi mất phiên của tôi. Họ nói với tôi rằng tôi có thể sử dụng vnc để không bị mất phiên làm việc hiện tại của mình, để nếu kết nối internet bị ngắt, tôi có thể kết nối lại và tiếp tục với phiên mở trước đó của tôi.

Những gì tôi làm là đăng nhập vào cụm từ xa 'remote.cluster' và gõ

 vncserver :1

sau đó tôi mở một thiết bị đầu cuối khác trên hệ thống của mình và tôi nhập

 ssh -C -NL 5901:remote.cluster:5901 myusername@remote.cluster &

Sau đó, tôi bắt đầu vinagre trên hệ thống của tôi và tôi kết nối bằng cách sử dụng giao thức ssh. Vấn đề là tôi không có chuyển tiếp x11 và tôi không thể mở cửa sổ. Nếu tôi cố gắng kết nối bằng cách sử dụng giao thức vnc với vinagre nó không kết nối, bởi vì tôi nhận được một cái gì đó như thời gian chờ kết nối.

Tôi nên làm gì?


4
2017-11-21 10:56


gốc




Các câu trả lời:


Trong trường hợp chúng ta kết nối với một X-Server từ xa thông qua VNC, chúng ta có lợi thế là ứng dụng đồ họa sẽ vẫn chạy ngay cả khi kết nối SSH tới điều khiển từ xa bị ngắt. Sau đó chúng tôi có thể kết nối lại để tiếp tục ứng dụng đồ họa. Xem thêm:

Để tăng tốc độ kết nối lại, chúng tôi có thể kết hợp kết nối với điều khiển từ xa bằng phiên SSH bằng cách sử dụng vncviewer từ tightvncviewer  Install tightvncviewer với tùy chọn -via. Bằng cách này, chúng ta có thể chạy trên máy chủ từ xa:

vncserver:0  ## or any other display number e.g. :1

để thiết lập kết nối trên trình xem qua đường hầm SSH:

vncviewer -via user@remote localhost:0

Làm như vậy sẽ cần băng thông đáng kể hơn vì toàn bộ desktop sẽ phải được truyền từ máy chủ VNC. Vì vậy nó có thể không thực sự là một ý tưởng tốt cho các kết nối băng thông thấp nhưng nó có thể cung cấp cho bạn một trải nghiệm tốt hơn trên băng thông cao nhưng kết nối không ổn định so với X-forwarding.


3
2017-11-21 11:54



những gì tôi thực sự muốn làm là, trong liên kết bạn cung cấp, những gì michael_n nói trong bình luận thứ hai cho câu trả lời đầu tiên, nhưng nó không hoạt động cho tôi bởi vì tôi không thể kết nối lại với màn hình -r, có lẽ tôi đang làm Có gì đó không đúng - simona
Tôi đã làm những gì bạn nói và vnc là yêu cầu một mật khẩu, mà tôi đã không thiết lập, vì vậy tôi nên yêu cầu nó cho người quản trị remotehost, phải không? Một điều nữa: nếu tôi sử dụng vnc thông qua ssh như trên trong câu trả lời của bạn, nó sẽ được làm chậm bởi vì tất cả các bản vẽ đồ họa sẽ được thực hiện trên máy từ xa chứ không phải là một địa phương của tôi? - simona
Vncviewer -via không yêu cầu 1) cho mật khẩu ssh cho điều khiển từ xa và sau đó 2) cho mật khẩu vnc nhưng chỉ sau này trong trường hợp nó được đặt trên điều khiển từ xa. Tất cả các bản vẽ sẽ được thực hiện trên máy chủ từ xa và sau đó được gửi dưới dạng hình ảnh nén qua đường hầm ssh (xem thêm tightvnc.com/vncviewer.1.php) - Takkat
Cảm ơn vì giải pháp của bạn. Bởi vì nó không rõ ràng với tôi khi tôi đọc giải pháp của bạn, tôi muốn chỉ ra cho người đọc trong tương lai rằng các lệnh chỉ cần thiết là vncserver: 1 và vncviewer -via user @ remote localhost: 1. Btw đồ họa trực quan là rất nhanh, tôi ngạc nhiên rằng nó thực sự là riun trên cụm từ xa và không phải trên máy địa phương của tôi - simona
@simona: cảm ơn vì đã chỉ vào điều này. Hy vọng với các chỉnh sửa nó rõ ràng hơn bây giờ. - Takkat


Lệnh được sử dụng:

ssh -C -NL 5901:localhost:5901 myusername@remote.cluster &

chuyển tiếp địa phương 5901 -> remote.cluster: 5901

Vì vậy, bạn có thể kết nối với localhost :: 5901 để kết nối với phiên VNC đang chạy trên remote.cluster (mà bạn không có quyền truy cập trực tiếp).

Chuyển tiếp X11 khác với VNC. Bạn cần sử dụng -X, ví dụ

ssh -X myusername@remote.cluster

Hơn bạn sẽ có thể chạy các ứng dụng GUI từ xa trên máy cục bộ của bạn, miễn là bạn có một máy chủ X chạy cục bộ (Ubuntu Desktop hoặc Xming trên Windows).

Cập nhật:

Tôi đã mắc lỗi trong quá trình chuyển tiếp, nó phải là:

ssh -C -L 5901:localhost:5901 myusername@remote.cluster

Sau đó, bạn có thể vnc vào localhost: 5901, lưu lượng sẽ được chuyển tiếp đến remote.cluster: 5901. Xin lỗi vì sự bất cẩn ...

Nếu không có GUI là bắt buộc, hãy cân nhắc sử dụng tmux hoặc là screen để tránh mất phiên.


1
2017-11-21 11:21



Tôi luôn luôn sử dụng ssh-X và nó hoạt động, điểm là tôi muốn thiết lập điều theo cách mà khi kết nối của tôi giảm xuống, tôi có thể kết nối lại và tìm lại phiên trước đó của mình. Vì vậy, bạn có nói rằng tôi nên sử dụng giao thức vnc trong vinagre để kết nối với cụm từ xa? nó không hoạt động: Tôi nhận được `kết nối đến host remote.host đã bị đóng ' - simona
Tôi đã cập nhật trả lời, tôi đã không nhận thấy một lỗi trong lệnh chuyển tiếp. - Terry Wang
Cảm ơn bạn, tôi không thực sự cần GUI, chỉ để hình dung một số lô, bạn có thể cho tôi một điểm khởi đầu cho màn hình hoặc tmux, tôi không biết gì về chúng - simona
Cá nhân tôi thích tmux, bạn có thể sử dụng màn hình hoặc byobu (màn hình nâng cao của Ubuntu), tương tự. Chạy tmux trên máy chủ từ xa về cơ bản đang chạy một daemon / phiên trên hộp đó, để khi bạn bị ngắt kết nối, bạn sẽ có thể kết nối lại qua SSH và đính kèm vào phiên đó - tmux đính kèm mà không làm mất những gì bạn đang làm việc trong thiết bị đầu cuối. Mẫu .tmux.conf mẫu gist.github.com/3950393 - Terry Wang