Làm cách nào để khởi chạy một cửa sổ firefox từ xa thông qua SSH?


56

Khi tôi SSH đến một hộp từ xa

$ ssh -X remotebox

sau đó bắt đầu firefox trên hộp từ xa

remotebox$ firefox

và tôi có firefox chạy trên máy cục bộ của mình, một cửa sổ firefox cục bộ sẽ mở ra. không có quá trình firefox đang chạy trên hộp từ xa.

Nếu firefox không chạy trên máy cục bộ của tôi thì cửa sổ firefox từ xa sẽ mở.

Tại sao nó mở một cửa sổ firefox địa phương? Làm thế nào tôi có thể ngăn chặn điều đó?


Ở đây một số thông tin của hệ thống địa phương của tôi.

Linux lesmana-laptop 2.6.32-24-generic #42-Ubuntu SMP Fri Aug 20 14:24:04 UTC 2010 i686 GNU/Linux

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 10.04.1 LTS
Release:    10.04
Codename:   lucid

DISPLAY=:0.0

Mozilla Firefox 3.6.8, Copyright (c) 1998 - 2010 mozilla.org

Thông tin của remotebox.

Linux dxray 2.6.22.19-0.4-default #1 SMP 2009-08-14 02:09:16 +0200 x86_64 x86_64 x86_64 GNU/Linux

LSB Version:    core-2.0-noarch:core-3.0-noarch:core-2.0-x86_64:core-3.0-x86_64:desktop-3.1-amd64:desktop-3.1-noarch:graphics-2.0-amd64:graphics-2.0-noarch:graphics-3.1-amd64:graphics-3.1-noarch
Distributor ID: SUSE LINUX
Description:    openSUSE 10.3 (X86-64)
Release:    10.3
Codename:   n/a

DISPLAY=localhost:15.0

Mozilla Firefox 3.0.14, Copyright (c) 1998 - 2009 mozilla.org

Lệnh sau bắt đầu phiên firefox từ xa với cửa sổ firefox từ xa.

remotebox$ firefox -no-remote

Lệnh sau tạo một độ trễ ngắn, sau đó quay lại dấu nhắc và cửa sổ firefox cục bộ bật lên. Không có quá trình firefox chạy trên remotebox.

remotebox$ firefox

Thông tin của remotebox2.

Linux marvin 2.6.31-22-generic #60-Ubuntu SMP Thu May 27 00:22:23 UTC 2010 i686 GNU/Linux

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 9.10
Release:    9.10
Codename:   karmic

DISPLAY=localhost:11.0

Mozilla Firefox 3.6.8, Copyright (c) 1998 - 2010 mozilla.org

Lệnh sau trên remotebox2 bắt đầu một phiên firefox từ xa như mong đợi.

remotebox2$ firefox

Tôi không biết tại sao firefox trên remotebox2 bắt đầu một phiên từ xa thay vì phiên cục bộ.


Chúng ta có thể lấy nội dung của $DISPLAYbiến trên cả máy cục bộ và máy từ xa không?
aperson

@aperson, cập nhật câu hỏi.
lesmana

Cảm ơn, $DISPLAYdường như không có vấn đề gì, ssh dường như đang thiết lập mọi thứ đúng cách.
aperson

Câu trả lời:


46

bên cạnh firefox -no-remote một tham số khác là firefox -no-xshmcho thấy kỹ thuật được sử dụng để làm cho nó hoạt động.

Bộ nhớ chia sẻ X11 là một kỹ thuật giao tiếp giữa các quá trình có thể được sử dụng bởi tất cả các ứng dụng được kết nối với một phiên máy chủ x đã cho. Nó có thể được sử dụng để thực hiện kéo và thả và các loại tương tác máy tính để bàn khác.

Nó cũng có thể được sử dụng để thực hiện các ứng dụng "mở một lần", nhằm giảm dấu chân (hoặc số lượng cửa sổ).

Vì giao thức X11 là mạng trong suốt, "bộ nhớ chia sẻ" cũng được mở rộng cho các máy khách X11 từ xa.


Có cách nào tôi có thể làm cho x không làm điều này? Tôi đang tìm cách để chứa một thiết lập trò chơi video / rượu để phân phối dễ dàng, nhưng điều này khiến tôi đau đầu, vì nó sẽ gây ra hành vi không xác định tùy thuộc vào những gì người dùng của container đã cài đặt và chạy. Tôi đang sử dụng giải pháp này để thực hiện chuyển tiếp x: stackoverflow.com/a/25168483 và chỉ muốn đảm bảo rằng container không bao giờ chia sẻ bộ nhớ với máy chủ.
Thưa ngài,

Nó không hoạt động với tôi
Bob Ebert

Hãy thử những gợi ý dưới: xuất khẩu MOZ_NO_REMOTE = 1
Kieveli

15

Thử firefox -no-remote


Điều này hoạt động trong việc mở một cửa sổ firefox từ xa. nhưng tôi vẫn không hiểu tại sao một lệnh từ xa có thể kích hoạt cửa sổ firefox cục bộ để mở.
lesmana

@lesmana điều này có thể là do chuyển tiếp x11 - nếu đó là thiết lập trong trường hợp sshd_configbạn có thể gặp tình huống khi nó được thực thi và được chuyển ngược trở lại.
Marco Ceppi

10

Lưu ý, tôi đã đào vòm vì điều này đang làm phiền tôi và bạn cũng có thể chỉ cần thêm:

MOZ_NO_REMOTE=1
export MOZ_NO_REMOTE

vào hồ sơ của bạn.


4

Bạn có thể thử điều này, khi bạn kết nối với máy ( ssh user@host; lưu ý: không có tùy chọn -X), trước tiên hãy nhập lệnh follow

export DISPLAY=:0 

điều này sẽ thay đổi màn hình mặc định thành màn hình hiện tại. Và sau đó chỉ cần gõ

firefox

để firefox sinh sản trên cửa sổ máy tính để bàn. Đảm bảo rằng bạn đã đăng nhập vào máy tính để bàn, mà không có (không có thông tin đăng nhập), bạn sẽ gặp lỗi sau;

firefox: cannot connect to X server :0

Phương pháp này cũng sẽ làm việc cho máy tính để bàn bị khóa. Vui lòng đảm bảo rằng bạn đã đăng nhập trên máy tính để bàn và vỏ ssh với cùng tên người dùng.

Khi có nhiều phiên họp để bàn, mỗi phiên được xác định bởi một số khác nhau như :0, :1, :2vv


Đó là câu trả lời duy nhất có hiệu quả với tôi.
answerSeeker

2

Không có giải pháp nào khác phù hợp với tôi, vì vậy đây là sau một chút tìm kiếm trên các trang web khác.

Bạn cần chạy firefox theo một quy trình riêng giống như cách bạn làm nếu bạn đang làm tất cả trên máy cục bộ. Sử dụng trình quản lý hồ sơ để tạo một hồ sơ mới như sau.

export MOZ_NO_REMOTE=1
firefox -ProfileManager

Để giữ mọi thứ nhất quán, tôi quyết định đặt tên cho từng hồ sơ mới trên máy bên ngoài giống như tên máy chủ.


1

Duyệt từ xa đơn giản

Nếu bạn muốn duyệt web cục bộ như thể bạn đang ngồi trước một hộp từ xa:

$ ssh -X username@remote.example.com

sau đó chạy Firefox bên trong phiên thiết bị đầu cuối từ xa :

$ firefox https://test-ipv6.com/

Chú ý sử dụng -Xcờ trong sshlệnh. Bạn cũng có thể thực hiện cả hai bước trong một lần, như hiển thị bên dưới:

$ ssh -X username@remote.example.com firefox http://test-ipv6.com/

Đường hầm IP từ xa: cổng

Nếu bạn có một ứng dụng chạy từ xa để lộ một số loại giao diện web, bạn sẽ quan tâm đến việc hiển thị cổng IP: từ xa như thể đó là một cổng IP: cục bộ. Trong trường hợp này, -Ltùy chọn xác định một sự tương ứng giữa localhost:localportremotehost:remoteport, như được hiển thị trong lệnh giả dưới đây:

ssh -L localhost:localport:remotehost:remoteport remoteuser@remotehost

Ví dụ:

$ ssh -L 127.0.0.1:18080:internal.example.com:8080 username@router.example.com

sau đó chạy Firefox cục bộ :

$ firefox http://127.0.0.1:18080

Trong ví dụ trên, bạn đang kết nối thông qua SSH username@router.example.comvà bạn quan tâm đến một giao diện web được hiển thị tại internal.example.com:8080. IP từ xa này: cổng sẽ được hiển thị cục bộ tại 127.0.0.1:18080.


0

Tôi sẽ chỉ thêm những gì làm việc cho tôi. Đơn giản là sử dụng firefox -no-remotethất bại với lỗi thông thường

Error: GDK_BACKEND does not match available displays

Tuy nhiên, sau đây đã làm việc:

ssh -Y user@host
firefox -no-remote

Các -Ytùy chọn cho phép tin cậy X11 chuyển tiếp. Chuyển tiếp đáng tin cậy X11 không chịu sự kiểm soát của tiện ích mở rộng X11 AN NINH. Bạn có thể xem xét thêm -Ctùy chọn để ra sshlệnh cho phép nén.

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.