Tôi có thể kết nối hoặc xem các phiên ssh bị bỏ rơi không?


14

Tôi có một ví dụ ảo về việc chạy lại mà tôi có thể sshtừ bất kỳ máy chủ nào trên mạng công ty. sshPhiên của tôi đã bị hủy trong khi chạy một số tập lệnh có thể khiến tôi bị ngắt kết nối. Các wholệnh tại địa phương vẫn liệt kê các kết nối giảm. Kết nối lại với sshbắt đầu một phiên hoàn toàn mới. Có cách nào để kết nối với phiên ban đầu không? Nếu không tôi có thể giết nó? Tôi có quyền truy cập root và vật lý. Tôi đã không sử dụng màn hình trong phiên ban đầu.

Câu trả lời:


11

Bạn muốn sử dụng màn hình trên điều khiển từ xa và sau đó khi bạn quay lại, bạn kết nối lại với màn hình đó.

nhưng không, bạn không thể kết nối lại với một phiên ssh trong chính nó, bạn phải sử dụng màn hình (hoặc một cái gì đó giống như nó để tạo điều kiện cho điều đó).

Nhìn vào câu hỏi này để biết ít nhất một tùy chọn khác và một số khác biệt giữa nó (tmux) và màn hình. sau khi đọc câu trả lời cho câu hỏi đó ... tôi thực sự muốn nói rằng tmux tốt hơn

ồ và đúng vậy, bạn có thể killxử lý (bao gồm cả bash fork) để ngăn chặn nó, bạn có thể cố gắng skillgiết người dùng bằng tên, nhưng tôi nghi ngờ nếu người dùng đó đã root ... nó có thể thử giết những thứ không thể.

câu trả lời đã được cập nhật một vài lần


4

Theo mặc định, bạn không thể kết nối lại với một phiên ssh bị bỏ rơi. Tuy nhiên, bạn có thể thiết lập các quy trình bên trong phiên ssh mà bạn có thể kết nối lại sau khi thiết lập lại phiên ssh mới.

Những gì bạn muốn sử dụng là màn hình hoặc thậm chí tốt hơn là một trình bao bọc thân thiện với người dùng xung quanh màn hình được gọi là byobu.

Màn hình cho phép bạn chạy nhiều phiên thiết bị đầu cuối ảo trong cùng một phiên ssh. Một hướng dẫncác trang trợ giúp có sẵn.

byobu là một trình bao bọc cho phép dễ dàng mở các màn hình mới bằng một phím chức năng đơn giản thay vì tổ hợp phím từ ctrl-a. Nó cũng hiển thị một dòng trạng thái với tất cả các thiết bị đầu cuối ảo mở có thể được đặt tên.

Một tính năng hay khác là tất cả màn hình của bạn có thể duy trì trong khi kết nối ssh của bạn bị ngắt kết nối. Bạn chỉ cần kết nối lại thông qua ssh và gọi byobu và mọi thứ vẫn như trước.

Cuối cùng một số ảnh chụp màn hình của byobu.


3

Như đã đề cập, màn hình có lẽ là đặt cược tốt nhất của bạn. Nếu / khi phiên của bạn bị hủy, nó sẽ tiếp tục chạy. Nhập list danh sách màn hình 'để xem các phiên khả dụng và' screen -r 'với phiên bạn muốn. Một mẹo nhỏ, bạn có thể hoàn thành tab chuỗi thay vì sao chép / dán toàn bộ.

Tuy nhiên, màn hình có thể gây khó chịu. Trong ứng dụng khách của tôi, bạn không thể dễ dàng cuộn lên để xem lịch sử trong bảng điều khiển. Nó hoạt động hơi khác so với bạn mong đợi. Nếu tất cả những gì bạn muốn làm là đảm bảo các procs chạy dài của bạn không bị giết, hãy sử dụng 'nohup'. Nó sẽ ngăn không cho Proc của bạn bị tắt khi bạn mất kết nối. Mặc dù vậy, hãy chắc chắn rằng bạn gửi đầu ra Proc của bạn đến một tệp nếu bạn muốn theo dõi nó. Ngoài ra, nếu bạn có tập lệnh bash, tôi nghĩ bạn cần gọi rõ ràng 'bash' trước nohup. Một ví dụ...

bash nohup ./myscript.sh> output.log 2> & 1 &

Điều đó có nghĩa là nohup, để ngăn chặn việc giết Proc, bash gọi bash một cách rõ ràng nếu bạn có bash cụ thể trong tập lệnh của mình, tập lệnh của bạn có tên 'myscript.sh' trong thư mục hiện tại, output.log là tệp để gửi cả std ra và lỗi ra và '&' ở cuối để chạy Proc trong 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.