2012-11-29 19 views
10

Tôi thiết lập Ubuntu Linux để chạy một máy chủ OpenSSH. Bộ định tuyến DSL của tôi là cổng chuyển tiếp kết nối SSH. Khi tôi sử dụngMáy khách OpenSSH bị treo khi đăng xuất khi chuyển tiếp kết nối X

ssh -X myhost 

rồi mở một số chương trình GUI, sau đó đóng ứng dụng GUI và thoát, sau đó đăng xuất SSH bị treo. <Ctrl>-c dường như hoạt động nhưng gây phiền nhiễu khi phải nhấn nó mọi lúc. Đăng xuất sẽ không treo nếu tôi không mở GUI.

Bất kỳ ai cũng có ý tưởng khắc phục sự cố này?

+0

Làm 'ssh -vX myhost' để nhận một số thông tin trong khi đăng nhập/đăng xuất. Hth. –

+0

Trình khởi chạy 'DBus' có hoạt động không? Điều đó đã gây ra vấn đề cho tôi. Vì lý do không rõ nó sẽ không chấm dứt khi tôi cố gắng đăng xuất. –

Trả lời

12

Điều này là do quá trình bạn bắt đầu mở một luồng (stdout/stderr) và không đóng. Có một cái nhìn here cho một lời giải thích sâu hơn và các giải pháp có thể.

+1

Rất có thể đây là cơ bản giống như cơ chế được tham chiếu trong liên kết của bạn, tuy nhiên nó có thể không phải là stdout/stderr, nhưng kết nối X được chuyển tiếp, vì OP đang sử dụng 'ssh -X'. Nếu vẫn còn một kết nối mở * thuộc bất kỳ loại * nào trên đường hầm ssh đó, ssh sẽ vẫn mở. Tôi đã chạy vào đó khi đăng nhập vào một hệ thống và bắt đầu một công cụ/ứng dụng Gnome/KDE của một số loại bắt đầu lên một số trình nền/dịch vụ phụ trợ, mà không nhất thiết phải biến mất khi ứng dụng tự làm ... – twalberg

+0

Cảm ơn để giải thích và liên kết. Có lẽ không muốn nghe câu trả lời này bởi vì không có giải pháp nhanh chóng nhưng ít nhất tôi biết những gì đang xảy ra :) – admiles

+0

@admiles Trong thực tế, có một cách dễ dàng. Xem câu trả lời của tôi dưới đây. – Sigi

5

Tôi biết đây là một câu hỏi cũ nhưng tôi đã có cùng một vấn đề và sau khi thực hiện một số đào tôi tìm thấy một giải pháp hữu ích. Bây giờ tôi đóng kết nối SSH với ~. "chấm dứt kết nối (và bất kỳ phiên ghép kênh)" và điều đó làm việc cho tôi. Ký tự thoát cần được nhập trên một dòng mới và trong trường hợp của tôi ký tự thoát không được hiển thị trên màn hình (tôi đã kết thúc thoát ký tự thoát, tức là ~~). FYI bạn có thể xem các kết nối được chuyển tiếp từ phiên SSH của bạn với ~#.

Để có danh sách đầy đủ các loại trình tự thoát ~? trong phiên SSH của bạn.

chuỗi được hỗ trợ thoát:

  • ~. - chấm dứt kết nối (và bất kỳ phiên multiplexed)
  • ~B - gửi một BREAK để hệ thống từ xa
  • ~C - mở một dòng lệnh
  • ~R - Yêu cầu khóa (chỉ giao thức SSH 2)
  • ~^Z - đình chỉ ssh
  • ~# - danh sách chuyển tiếp kết nối
  • ~& - ssh nền (khi chờ đợi các kết nối đến chấm dứt)
  • ~? - thông điệp này
  • ~~ - gửi các ký tự thoát bằng cách gõ hai lần

(Lưu ý mà thoát chỉ được công nhận ngay lập tức sau dòng mới.)

+0

Cơ sở này được bật theo mặc định trong bất kỳ phiên bản nào của ứng dụng khách OpenSSH mà tôi từng sử dụng. –

+0

Tôi chỉ recommented nó. Đó là mặc định trên của tôi quá, trong sự nhầm lẫn của tôi trên các ký tự thoát không được hiển thị tôi nghĩ rằng nó đã làm với tập tin cấu hình. Tập tin cấu hình là một cách để thay đổi mặc định. Cảm ơn vì sự trả lời. –

+0

Bạn có thể giải thích thêm về cách thực hiện việc này không? Các stdin được chuyển hướng đến vỏ từ xa, phải không? –

1

Bạn có thể gửi SSH tự động sau nền bắt đầu ứng dụng GUI từ xa của bạn:

ssh -X -f remote.host.name 'name_of_gui_application' 

Thao tác này sẽ yêu cầu mật khẩu, sau đó chạy ứng dụng và đặt SSH về nền ngay lập tức.

Nó cũng sẽ chuyển hướng STDIN từ /dev/null, do đó phiên của bạn sẽ không "treo" sau khi bạn đóng ứng dụng (không phải là bạn biết, vì nó đang chạy trong nền anyway).

Dưới đây là những gì các trang hướng dẫn của SSH có thể nói về điều này:

Cách khuyến khích để bắt đầu chương trình X11 tại một trang web từ xa với một cái gì đó giống như ssh -f host xterm.

+1

Điều này không khắc phục được sự cố, nó chỉ ẩn nó - để lại một quá trình rảnh rỗi và kết nối SSH nằm xung quanh không làm gì hữu ích (và được bí mật về nó, để khởi động). –

+0

'ssh -f host xterm' thậm chí làm gì, không có chuyển tiếp X? Tôi ngạc nhiên là trong hướng dẫn SSH. Và Daniel là đúng, điều này chỉ giấu được vấn đề. –