Làm thế nào để ssh -X hoạt động?


9

Khi sử dụng ssh -Xlà bản sao được thực thi và chạy cục bộ hoặc nó chạy trên máy chủ. Vì nó được gọi là X11 chuyển tiếp, nó làm tôi nghĩ rằng cửa sổ được vẽ trên máy của tôi nhưng chạy trên máy chủ.


btw .. và một số bản phân phối Linux này sẽ là ssh -Y
txwikinger

5
@txwikinger: -X và -Y được hỗ trợ bởi ssh Linux. -Y không chuyển tiếp đáng tin cậy.
kbyrd

"Remote X Apps mini-HOWTO" mô tả những phần X bao gồm và cách chúng được phân chia và tương tác khi làm việc từ xa.
Grzegorz Wierzowiecki

Câu trả lời:


17

Tệp thực thi được chạy trên máy từ xa và được hiển thị (vẽ) trên máy cục bộ. Những gì ssh -X remotehiện đang khởi động một máy chủ proxy X11 trên máy tính từ xa. Nếu bạn làm echo $DISPLAYtrên máy từ xa, bạn sẽ thấy một cái gì đó như localhost:21.0. Đó là yêu cầu chương trình chạy trên máy từ xa gửi lệnh vẽ đến máy chủ X11 với id 21. Sau đó, chuyển tiếp các lệnh đó đến máy chủ X11 thực đang chạy trên máy cục bộ, vẽ trên màn hình của bạn. Chuyển tiếp này xảy ra qua kết nối ssh được mã hóa, vì vậy chúng không thể (dễ dàng) lắng nghe.

Không giống như Windows, Mac OS, v.v., X11 được thiết kế ngay từ đầu để có thể chạy các chương trình trên một mạng mà không cần những thứ như máy tính để bàn từ xa. Trong một thời gian, khách hàng mỏng X11 là phổ biến. Về cơ bản, nó là một máy tính bị loại bỏ chỉ chạy máy chủ X11. Tất cả các chương trình chạy trên một số máy chủ ứng dụng ở đâu đó.


3
"Máy khách mỏng X11" thường được gọi là "thiết bị đầu cuối X".

X11 được thiết kế để có thể chạy các chương trình trên một mạng vì X11 là giao thức mạng. :) Và nhiều máy trạm toàn diện có tùy chọn X Terminal, trong đó họ đã khởi động một kernel cơ bản với root qua NFS (hoặc trên ramdisk) và chỉ chạy một máy chủ X. Sun XKernel là một trong số đó. Bạn có thể chạy nó trên các máy trạm (nhưng không đĩa) như Sun 3/50, 3/60, 3/75 hoặc SPARCstation cổ điển sau này, SLC, ELC, v.v.
Alexios

@Alexios Mình nhớ sê-ri Sun 3 cũ. Chúng tôi có một phòng chứa đầy các thiết bị đầu cuối Sun X (không đĩa) đang chạy trên một máy chủ duy nhất cho phòng thí nghiệm máy tính của chúng tôi. Khá thú vị khi sức mạnh chập chờn và tất cả 20 Điều khoản X hoặc hơn đã cố gắng khởi động cùng một lúc. Vấn đề chính là tầm nhìn của Sun vượt quá những gì công nghệ có thể hỗ trợ vào thời điểm đó.
KeithB

Nó chắc chắn đã làm. Nhưng nếu bạn nghĩ về nó, bạn sẽ gặp rắc rối tương tự ngày hôm nay nếu bạn cố gắng chạy một phòng thí nghiệm gồm 20 con thú đa năng, đói khát năng lượng khỏi một máy chủ. Chúng tôi không còn chạy Motorola 68020 ở tần số 16 MHz, nhưng thông số kỹ thuật hiện đại nhất của thiết bị đồ họa đã không được phát hiện ra trước đó. Tôi đã chảy nước dãi ở màn hình không màu 1152x900 256 màu của Sun. Nhưng đó là những năm 80 :)
Alexios

1

Ứng dụng chạy từ xa, ngoại trừ các thành phần X (tức là hiển thị các lệnh x, v.v.) đang chạy cục bộ. Mọi ứng dụng khách thường sử dụng máy chủ X cục bộ để hiển thị UI. Trong trường hợp này, các lệnh được gửi qua kênh SSH được mã hóa từ máy từ xa đến máy cục bộ của bạn và được hiển thị ở đó.


0

Thiết lập $DISPLAYchỉ là một nửa của thỏa thuận mặc dù. Để có thể xác thực ứng dụng khách ở phía máy chủ, sshcũng sử dụng xauthđể tạo cookie xác thực mới. Xem xauth list~/.Xauthority.


0

Chìa khóa có thể nhận ra rằng máy chủ X là một thứ duy nhất cung cấp đồ họa cho người dùng và tất cả các chương trình khác nhau muốn đồ họa phải là máy khách X và kết nối với máy chủ. Giao diện giữa các chương trình máy khách và máy chủ X được thiết kế từ đầu để hỗ trợ các kết nối với các chương trình từ xa, không chỉ các chương trình trên máy cục bộ.

Trong một mạng đủ điên rồ, một chương trình có thể được chạy ở bất cứ đâu và hiển thị đồ họa của nó ở bất cứ nơi nào khác ...

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.