it-swarm-vi.tech

Gắn kết SSHFS tồn tại ngắt kết nối

Tôi đang sử dụng SSHFS gắn kết từ máy tính xách tay của tôi đến máy chủ trung tâm.

Rõ ràng, gắn kết SSHFS bị hỏng sau khi ngắt kết nối lâu hơn (ví dụ: trong khi tạm dừng), khiến kết nối SSH cơ bản đã hết thời gian.

Có cách nào để gắn kết SSHFS sống sót sau khi ngắt kết nối lâu dài (> 5 phút) hoặc thậm chí quay số lại với một IP khác không?

60
bene

Cảm ơn lời khuyên của autossh và autofs.

Tuy nhiên, với mục đích trực tiếp của mình, tôi đã tìm thấy một giải pháp đơn giản hơn nhiều mà không được ghi chép lại quá tốt:

sshfs -o reconnect server:/path/to/mount
54
bene

Sử dụng -o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3

Sự kết hợp ServerAliveInterval=15,ServerAliveCountMax=3 khiến các lỗi I/O bật ra sau một phút ngừng hoạt động mạng. Điều này rất quan trọng nhưng phần lớn không có giấy tờ. Nếu tùy chọn ServerAliveInterval được để mặc định (vì vậy không có kiểm tra trực tiếp), các quá trình trải nghiệm I/O bị treo dường như ngủ vô thời hạn, ngay cả sau khi sshfs bị reconnect 'ed. Tôi coi đây là một hành vi vô dụng.

Nói cách khác, những gì xảy ra trên -o reconnect mà không gán ServerAliveInterval là bất kỳ I/O nào cũng sẽ thành công hoặc treo ứng dụng vô thời hạn nếu ssh kết nối lại bên dưới. Một ứng dụng điển hình trở thành hoàn toàn treo như là kết quả. Nếu bạn muốn cho phép I/O trả lại lỗi và tiếp tục ứng dụng, bạn cần ServerAliveInterval=1 hoặc tuyệt hơn.

Các ServerAliveCountMax=3 dù sao cũng là mặc định, nhưng tôi muốn chỉ định nó cho dễ đọc.

65
kubanczyk

Autossh tự động kết nối lại các phiên ssh khi thông báo ssh đã chết hoặc ngừng lưu lượng. Vì nó chỉ là ssh tự động, nó sẽ hoạt động từ các IP khác nhau và tạm ngưng (ngay cả khi máy tính xách tay thức dậy trên một làn đường khác).

12
kband

Một điều bạn có thể làm là gắn kết các hệ thống tập tin của bạn thông qua autofs . Autofs là một công cụ sẽ gắn kết một hệ thống tập tin khi bạn sử dụng một cái gì đó trong thư mục mà hệ thống tập tin sẽ được gắn kết. Khi nó phát hiện hoạt động, hệ thống tập tin được gắn kết. Khi không có gì xảy ra trên hệ thống tập tin thì nó không được đếm.

Đây là một howto Tôi đã tìm thấy trên google để thực hiện điều này, ở đó có một số người khác.

9
Zoredache

Tôi nghi ngờ là không có, bởi vì ngay cả khi bạn có thể định cấu hình máy khách SSH của mình không ngắt kết nối, máy chủ có thể được cấu hình để làm như vậy sau một khoảng thời gian không hoạt động được chỉ định và bạn sẽ không thể ghi đè lên. Ngay cả khi bạn có thể, nếu bạn không bao giờ khôi phục lại kết nối, máy chủ sẽ bị treo và theo thời gian có thể dẫn đến lãng phí đáng kể tài nguyên máy chủ.

Một kỹ thuật tốt hơn, tôi nghĩ, là ngắt kết nối hệ thống tập tin trước khi tạm dừng máy tính của bạn và kết nối lại khi máy tính thức dậy một lần nữa. Cơ chế để làm như vậy có thể phụ thuộc vào chính xác cách bạn tạm ngưng máy tính của mình - Tôi sử dụng nhân tuxonice và để làm một cái gì đó như thế này tôi có một chỉ thị như

Unmount /mnt/sshfs

trong /etc/hibernate/common.conf.

2
David Z

câu trả lời của kubanchot là tuyệt vời. Tôi gặp vấn đề với việc đóng băng toàn bộ giao diện vì sshfs quá tham lam, giờ đây để kết nối dễ dàng được bắt đầu bởi một tập lệnh kết nối lại khi máy tính xách tay được mở và không bị đóng băng khi kết nối chậm hơn, bạn có thể sử dụng tập lệnh bash như thế (có thể không an toàn lắm, nhưng thuận tiện cho nhiều dự án web chẳng hạn):

#!/bin/bash
echo PWD | sshfs [email protected]:/ MOUNT_PATH -o password_stdin,reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 -p PORT -C -oStrictHostKeyChecking=no
if xhost >& /dev/null ; then
    pcmanfm MOUNT_PATH
fi
1
Timofey Bugaevsky