giữ kết nối ssh sống và bền bỉ trong khi chuyển đổi kết nối giao diện mạng


13

Kịch bản:

  1. Tại bàn của tôi với máy tính xách tay cắm vào ethernet và được kết nối với máy chủ từ xa qua SSH
  2. Muốn chuyển sang phía bên kia văn phòng với máy tính xách tay và đổi sang WiFi mà không làm gián đoạn kết nối SSH

Tôi đã thử: kết nối với WiFi trước sau đó ngắt kết nối ethernet; và cũng ngắt kết nối ethernet trước sau đó kết nối với WiFi. Cả hai cách tiếp cận đều không hiệu quả. Cũng đã thử khi sử dụng máy chủ Ubuntu và OS X cùng với cả hai tùy chọn HĐH cho máy khách. Không may mắn.

Có vẻ như tôi cần một số cách để nói với kết nối SSH của mình rằng nó nên bắt đầu sử dụng giao diện mạng mới được kết nối thay vì giao diện bị ngắt kết nối cũ. Có ý kiến ​​gì không?

Tôi nhận ra rằng tôi có thể ở lại WiFi cả ngày, nhưng tôi không muốn làm điều đó. Tôi cũng nhận ra rằng tôi chỉ có thể làm việc từ trong một phiên màn hình trên máy chủ từ xa và sau đó kết nối lại với phiên màn hình đó sau khi thay đổi giao diện, nhưng tôi cũng không muốn làm điều đó. Ví dụ: tôi có thể đang thực hiện một số lệnh lớn như kết xuất cơ sở dữ liệu qua SSH hoặc tôi có thể mở các tệp qua SSHFS hoặc tôi chỉ muốn tránh phiền toái khi kết nối lại


3
Nếu bạn nhận được cùng một địa chỉ IP theo cả hai cách, thì điều này sẽ chỉ hoạt động. Nếu không, nó là khá nhiều không thể.
Alan Curry

@AlanCurry Nếu cả máy khách và máy chủ đều hỗ trợ MPTCP, thì có thể. Nhưng hỗ trợ MPTCP vẫn còn rất hạn chế, vì vậy điều đó khó có thể xảy ra.
kasperd

Câu trả lời:


4

Tôi nghi ngờ rằng giải pháp này sẽ không hoạt động cho SSHFS, v.v., nhưng bạn có thể xem Mosh , nơi cung cấp hỗ trợ chuyển vùng cho ít nhất là chính vỏ.


Đây có vẻ là một giải pháp rất tốt, nhưng thật không may, nó cũng cần phải được cài đặt trên máy chủ, điều này không phải lúc nào cũng có thể do quyền.
user000001

4

Tôi sợ bạn không thể làm điều này, theo định nghĩa. Một phiên SSH chạy qua kết nối TCP, được xác định bởi bốn tuple (địa chỉ nguồn, cổng nguồn, địa chỉ đích, cổng đích). Bạn không thể chuyển kết nối hiện có sang một địa chỉ khác trên máy khách (ngoài thực tế là HĐH sẽ phá hỏng kết nối khi giao diện bị hỏng).

NAT có thể làm phức tạp bức tranh này, nhưng không phải là cách giúp bạn.


Có, nhưng ứng dụng có thể kết nối lại sau khi biết rằng ổ cắm đã đóng. Giao thức SSH có điều khoản để tiếp tục phiên cũ không?
Ajay Brahmakshatriya

@AjayBrahmakshatriya SSH không có công cụ để tiếp tục các phiên
Ferrybig

2

Tôi biết chủ đề cũ, nhưng vì sự hoàn chỉnh vì tôi đang tìm kiếm điều tương tự ...

Trong Windows 7 hoặc mới hơn, bạn chỉ cần có thể chọn cả bộ điều hợp wifi và bộ điều hợp Ethernet và chọn "Kết nối cầu". Điều này sẽ cung cấp cho bạn một địa chỉ IP duy nhất cho cả hai và bây giờ bạn sẽ có thể ngắt kết nối và kết nối lại Ethernet theo ý muốn (được phủ sóng wifi liên tục).


Ý tưởng tốt, tôi sẽ phải thử điều này.
Doug

Nếu làm điều này, không thể cho cả hai mạng cùng một lúc, tùy thuộc vào thiết lập, nó sẽ đá tất cả mọi người trong khu vực của mạng (nguồn: điều này đã xảy ra với tôi)
Ferrybig

2

Tôi quản lý điều này theo hai cách:

Bắt đầu phiên từ máy chủ đầu cuối trong trung tâm dữ liệu của bạn (RDP / Windows / etc)

HOẶC LÀ

Cài đặt GNU hoặc và khởi động chúng sau khi đăng nhập.

Tôi thích tmuxbởi vì screentrường học khá cũ, nhưng nếu bạn chỉ được phép cài đặt các gói được hỗ trợ, screenthì trong repo của RHEL.

HOẶC LÀ

Làm tất cả.


tmuxthực sự tiện dụng Chạy các công cụ từ xa bên trong tmuxlà một thói quen tuyệt vời để có được vào.
gà con

Vâng tôi đồng ý. Các chức năng nhiều cửa sổ là tuyệt vời.
Doug

1

Nó không thể được thực hiện dễ dàng.

Tôi có thể chỉ cho bạn một số ứng dụng rất đắt tiền cho phép bạn giữ phiên telnet hoặc SSH khi di chuyển giữa các IP hoặc AP hoặc thậm chí trong thời gian ngắt kết nối mạng trong thời gian dài, nhưng về cơ bản chúng đạt được điều này bằng cách tạo một máy chủ luôn mở phiên bên cạnh cho máy khách để máy chủ không biết kết nối khác nhau hoặc bị hủy.

Tôi cho rằng bạn có thể mã hóa một thứ như vậy, nhưng tôi tưởng tượng rằng nếu nó dễ thực hiện, khách hàng của tôi sẽ không bị cưỡng hiếp với chi phí 5 con số để giữ kết nối đầu cuối của họ mở trên máy quét cầm tay không dây.

Mặc dù vậy, tôi đã vấp ngã trên màn hình, nơi tuyên bố sẽ tạo ra các phiên SSH liên tục , có thể thực sự hoạt động ... hãy thử xem.


1

Vấn đề có lẽ là địa chỉ IP nguồn của bạn thay đổi khi bạn chuyển đổi giữa bật và wifi. Điều này sẽ ngăn các phiên ssh quay trở lại.

Tôi đã xử lý vấn đề này trong linux bằng cách kết nối qua vpn và đảm bảo rằng kết nối vpn luôn cung cấp cùng một ip cho tài khoản của bạn (không khó để thực thi, nhưng rất có thể bạn sẽ nhận được cùng một ip qua vpn theo mặc định có sẵn, nhưng tốt hơn là thực thi nó để chắc chắn). Tôi chủ yếu sử dụng vtun, nhưng openvpn cũng ok. Đảm bảo các kết nối của bạn đi qua vpn (định tuyến chính xác, tiền tố được đẩy, ...)

Tôi đã có thể ngoại tuyến từ cáp chỉ trong 5 phút và sau đó kết nối với wifi và vẫn có thể kết nối với tất cả các phiên ssh của tôi. Đang thực hiện ping, mtr, htop, ... chỉ tiếp tục khi vpn được khôi phục như không có gì xảy ra.


0

Hãy thử chỉ sử dụng wifi khi bạn bắt đầu phiên ssh. Sau đó cắm ethernet của bạn vào. Điều đó sẽ cho phép các kết nối mới đi qua ethernet, nhưng kết nối được thiết lập sẽ vẫn còn trên wifi. Ít nhất tôi đã thấy nó hoạt động như thế này với OSX, vì vậy OS / phần cứng có thể thay đổi.


0

Tôi khá chắc chắn rằng bạn có thể làm điều này với một số lượng hack w / VM và Đường hầm ngớ ngẩn.

Điều này chưa được kiểm tra, nhưng hãy cho tôi biết nếu nó thực sự hoạt động.

  1. Tạo một máy khách VM có 2 giao diện, 1 bộ chuyển đổi cầu nối (sang wifi) và 1 máy chủ chỉ kết nối mạng
  2. Hãy nói rằng VM có 192.168.0.25 cho bộ điều hợp cầu nối với người vợ và 192.168.56.5 cho máy chủ.
  3. Trong vm, hãy tạo kết nối ssh với đường hầm tới cổng 22 từ xa ssh -L 10022:remote.server.example.com:22
  4. Bây giờ kết nối qua đường hầm. ssh 192.168.56.3 -p 10022
  5. Khi bạn mất kết nối wifi, hãy thay đổi bộ chuyển đổi trên VM sang bộ điều hợp mạng ether.
  6. Hy vọng rằng nó không hup hoặc làm hỏng bảng định tuyến

Cho tôi biết nếu nó hoạt động.

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.