it-swarm-tr.com

Bağlantıyı kesen SSHFS yuvası

Dizüstü bilgisayarımdan merkezi bir sunucuya SSHFS bağlar kullanıyorum.

Açıkçası, SSHFS montajı daha uzun bir bağlantı kesildikten sonra (örn. Askıya alma sırasında) kesilir, altta yatan SSH bağlantısının zaman aşımına uğramasına neden olur.

SSHFS bağlantı parçalarının uzun süreli bağlantı kesilmelerinden (> 5 dakika sonra) ve hatta farklı bir IP'ye sahip bir yeniden aramadan kurtulmanın bir yolu var mı?

60
bene

Autossh ve autofs ipuçları için teşekkürler.

Ancak, doğrudan amacım için çok iyi belgelenmemiş çok daha basit bir çözüm buldum:

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

-o reconnect,ServerAliveInterval=15,ServerAliveCountMax=3 Kullanın

ServerAliveInterval=15,ServerAliveCountMax=3 Kombinasyonu, bir dakikalık ağ kesintisinden sonra G/Ç hatalarının ortaya çıkmasına neden oluyor. Bu önemlidir, ancak büyük ölçüde belgelenmemiştir. ServerAliveInterval seçeneği varsayılan olarak bırakılırsa (canlı denetim olmadan), sshfs reconnect 'ed edildikten sonra bile G/Ç askıda kalmayı deneyimleyen işlemler süresiz olarak uyku gibi görünür. Bunu yararsız bir davranış olarak görüyorum.

Başka bir deyişle, -o reconnect Üzerinde ServerAliveInterval atamadan ne olur? Ssh altına yeniden bağlanırsa, herhangi bir G/Ç başarılı olur veya uygulamayı süresiz olarak kapatır. Sonuç olarak tipik bir uygulama tamamen asılır. G/Ç'nin bir hata döndürmesine ve uygulamayı sürdürmesine izin vermek isterseniz, ServerAliveInterval=1 Veya daha fazlasına ihtiyacınız vardır.

ServerAliveCountMax=3 Yine de varsayılan değerdir, ancak okunabilirlik için belirtmek istiyorum.

65
kubanczyk

Autossh , ssh'ın trafikte öldüğünü veya durduğunu fark ettiğinde ssh oturumlarını otomatik olarak yeniden bağlar. Sadece otomatik ssh olduğundan, farklı IP'lerden ve askıya alma işleminden (dizüstü bilgisayar farklı bir landa uyanıyor olsa bile) çalışacaktır.

12
kband

Yapabileceğiniz bir şey, dosya sistemlerinizi autofs ile bağlamaktır. Autofs, dizinde dosya sisteminin bağlanacağı bir şey kullandığınızda bir dosya sistemi kuracak bir araçtır. Etkinlik algıladığında dosya sistemi bağlanır. Dosya sisteminde hiçbir şey olmadığı zaman bağlantısı kesilir.

İşte bir howto Bunu başarmak için Google'da buldum, orada birkaç diğerleri.

9
Zoredache

SSH istemcinizi bağlantıyı kesmeyecek şekilde yapılandırabilseniz bile, sunucu belirli bir süre işlem yapılmadığında bunu yapacak şekilde yapılandırılmış olabilir ve bunu geçersiz kılamazsınız. Yapabilseniz bile, bağlantıyı hiçbir zaman sürdürmezseniz, sunucu asılı kalır ve zamanla sunucu kaynaklarında önemli bir israfa yol açabilir.

Daha iyi bir teknik, bence, bilgisayarınızı askıya almadan önce dosya sistemini çıkarmak ve bilgisayar yeniden uyandığında yeniden takmaktır. Bunu yapma mekanizması tam olarak bilgisayarınızı nasıl askıya aldığınıza bağlı olabilir - smokin çekirdeğini kullanıyorum ve böyle bir şey yapmak için böyle bir direktifim var

Unmount /mnt/sshfs

içinde /etc/hibernate/common.conf.

2
David Z

kubanczyk cevabı harika. Çok açgözlü sshfs nedeniyle tüm arayüzü dondurmayla ilgili bir sorun yaşadım, şimdi dizüstü bilgisayar açıldığında yeniden bağlanan ve bağlantı yavaşladığında donmayan bir komut dosyası tarafından başlatılan kolay bağlantı için, böyle bir bash komut dosyası kullanabilirsiniz (belki çok güvenli değil, örneğin birçok web projesi için uygun):

#!/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