Ssh zaman aşımım ağ konumuna göre neden değişiyor?


15

Evden (Fedora 10'u çalıştıran) ofis sunucularımızdan birine girdiğimde, oturumum oldukça kısa bir faaliyet döneminden sonra (5 dakika kadar) zaman aşımına uğruyor. TcpKeepAliveHiçbir etkisi, istemci tarafında kullanarak denedim .

Anlamadığım şey, eğer şirket LAN'ında ofisteysem, zaman aşımına uğramadan tüm gün aktif olmayan bir oturum bırakabilirim, bu yüzden davranış konumuma bağlı gibi görünüyor.

Bunun neden olduğu ve LAN'da olmadığımda zaman aşımlarının nasıl önleneceği hakkında herhangi bir fikir? Bu yardımcı olursa Mac OSX'te Terminal istemcisini kullanıyorum.

GÜNCELLEME - Dave Drager'ın ServerAliveIntervalseti sıfırla kullanma önerisi TcpKeepAlive=nobenim için çalıştı. Diğer bazı cevaplarla ilgili olarak ClientAlive... ayarları Mac OSX SSH istemcisi tarafından kabul edilmez.

Yanıtlar:


6

Burada bu konuda iyi bir yazı var .

Öneriyorlar:

ssh -o TCPKeepAlive=yes

veya:

ssh -o TCPKeepAlive=no -o ServerAliveInterval=15

Bununla birlikte, çalışma sitemde oturumların bağlantısının kesildiği, evde iyi oldukları bir sorunum var. Güvenlik duvarımın (SonicWall) TCPKeepAlive ile belki NAT nedeniyle akıyor olabileceğine inanıyorum.

SSH istemcim SecureCRT, neyse ki temelde sunucuya hiçbir şey yapmayan bir komut gönderdiğine inandığım bir "NO-OP" protokolü için bir seçeneğe sahip. Bunu manuel olarak etkinleştirerek bağlı kalabilirim. MacOSX terminal istemcisinin neye benzediğinden emin değilim. Komut satırında "NO-OP" nin nasıl uygulanacağına dair bir yazı var.

Son olarak, gerçek TCP bağlantınızı izlemek için Wireshark veya başka bir dinleyiciyi kullanmak isteyebilirsiniz. Neden zaman zaman bağlantısının kesildiğini görmenin son yolu bu olurdu.


Teşekkürler Dave - ServerAliveInterval seçeneği harika çalıştı.
gareth_bowles

@Dave (a) güvenlik riski veya (b) garanti edilmeyen sunucu yükü olabileceğinden, bazı sunucu yöneticilerinin bu uygulamada kaşlarını çattığını duymuştum. Bu endişelerden herhangi biri geçerli mi, IYHO?
Jonathan Day

Bu, istemci uç noktasında bir ayardır, bu nedenle düşmanca bir ortamdaysanız, birisinin sizi taklit etme yeteneğini artırabilmesine rağmen, bağlantının güvenliği üzerinde bir etki yaratması çok olası değildir. Bunun fazladan yüke neden olduğunu gerçekten göremiyorum.
Dave Drager

@Dave: Bu komutu girdim ancak aşağıdakileri aldım, kullanım: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:] bağlantı noktası] [-e escape_char] [-F configfile] [- I pkcs11] [-i kimlik_dosyası] [-L [bağ_adresi:] bağlantı noktası: ana bilgisayar: ana bilgisayar bağlantı noktası] [-l giriş_adı] [-m mac_spec] [-O ctl_cmd] [-o seçenek] [-p bağlantı noktası] [-R [ bind_address:] bağlantı noktası: host: hostport] [-S ctl_path] [-W ana bilgisayar: port] [-w local_tun [: remote_tun]] [kullanıcı @] ana bilgisayar adı [komut]
user1050619 10:14

Bu düzeltme PuTTY için de işe yaradı. Ayarlamam gereken tek seçenek Bağlantı -> Saniye Arasındaydı: 15. SSH oturumu canlı ve 8 saatten uzun süredir (Comcast), genellikle 30 dakikadan kısa sürede kesiliyordu.
Dan Dascalescu

2

Bunun nedeni muhtemelen evden bağlanırken TCP oturumunu kısa bir süre sonra kapatan bir güvenlik duvarından geçmenizdir. Ancak TcpKeepAlive bundan kaçınmalıdır. İstemci tarafında veya sunucu tarafında TcpKeepAlive'yi etkinleştirdiniz mi?


TcpKeepAlive istemci tarafında (~ / .ssh / config) yaptım - Bu yerel güvenlik duvarı sorunları ele olacağını düşündüm, ama yine de zaman aşımına uğradı.
gareth_bowles

Varsayılan olarak sunucu tarafında "açık" dır, ancak devre dışı bırakılıp bırakılmadığını görmek için sshd_config dosyasını kontrol edin.
yarıçap

Bazı güvenlik duvarları, boşta kalmazlarsa belirli bir süre sonra TCP bağlantısını keser.
TomOnTime

Bazı güvenlik duvarları, boşta kalmazlarsa belirli bir süre sonra TCP bağlantısını keser. Bunu tespit etmenin yolu, sürekli olarak bağlantısının kesilip kesilmediğini görmektir.
TomOnTime

Düzeltmek için kullandığım ayarlar şunlardır: TCPKeepAlive no, ClientAliveInterval 300, ClientAliveCountMax 3
Matt Simmons

2

Bunu her zaman Comcast bağlantımda alıyorum. Sorun, SSH istemcinizin canlı tutma aralığının ağ yolunuzda yapılandırılan zaman aşımı süresi için çok uzun olması. Linux'taysanız ServerAliveIntervalve ServerAliveCounterdeğerlerini varsayılan değerlerinden daha düşük olacak şekilde değiştirebilirsiniz . Bu değer saniye olarak ayarlanır. Sistem genelindeki yapılandırma dosyası (genellikle) içinde bulunur /etc/ssh/ssh_config. Bu iki VE'yi ayarlamak TcpKeepAlivebağlantınızın devam etmesine yardımcı olacaktır.


1

Yarıçapın dediği gibi, bazı tam güvenlik duvarları belirli (genellikle yapılandırılabilir) süreden sonra bir bağlantıyı 'unutur' ve bağlantı için daha fazla iletişime izin vermez; bağlantının bir TCP SYN ile başlamasını beklerler (burada SSH iletişiminize başvuruyorum).

Başka bir olasılık daha var. Eviniz ve ofisiniz arasındaki ağ yolunda (paket türünden) kayıplar olabilir. SSH istemcisini yazmaya çalıştığınızda, bağlantınız bir süre durduysa, istemci vazgeçebilir ve başarısız olabilir.

İstemcideki kalıcı yapılandırma burada ilk durumu ele alır, ancak ikinci durumda yardımcı olamaz. Güvenlik duvarı genellikle ofisinizin çevresindedir ve bu nedenle yapılandırılabilir. Bu da ilk noktada yardımcı olacaktır.

Aralıklı bağlantı kayıpları olup olmadığını kontrol etmek için, istemci makinenizden arka planda bir 'ping'i aktif tutabilirsiniz.


0

Ayrıca, başkaları tarafından önerilen ayarları ~/.ssh/configdosyanızda varsayılan olarak ekleyebilirsiniz , böylece sshher bağlantı başlattığınızda bunları iletmek zorunda kalmazsınız :

nano ~/.ssh/config ve Ekle:

TCPKeepAlive=no
ServerAliveInterval=15
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.