ψοφάν' οι αδρανείς ssh connections

Giorgos Keramidas keramida at ceid.upatras.gr
Tue May 29 12:59:54 EEST 2007


On 2007-05-29 12:20, Nick Demou <ndemou at gmail.com> wrote:
> εδώ και λίγες μέρες αν αφήσω αδρανές ένα ssh connections που έχω
> ανοίξει σε κάποιο remote host  τότε αυτά "παγώνουν". Με το "αδρανές"
> εννοώ πως το remote pc δεν τυπώνει τίποτα και ούτε κι εγώ πατάω
> πλήκτρα (αν π.χ. αφήσω ένα watch ls να τρέχει το connection δεν
> παγώνει ποτέ). Με το "παγώνει" εννοώ πως δεν μπορώ ούτε να λάβω ούτε
> να στείλω κάτι και μετά μετά από κάμποσο χρόνο θα δώ αυτό το error
> message:
>     Read from remote host χ.υ.ζ: Connection timed out
>     Connection to χ.υ.ζ closed.

Αυτό γίνεται, συνήθως, επειδή κάποιο ενδιάμεσο 'router' είναι ελαφρώς
κακορυθμισμένο.  Αντί να περνάει απλά πακέτα από το ένα interface στο
άλλο, προσπαθεί να κάνει πιο «υψηλού επιπέδου» filtering των
connections, αλλά έχει πολύ μικρό timeout για τα state table entries που
χρησιμοποιεί.

Το αποτέλεσμα είναι ότι ενώ μπορεί το TCP keepalive option να είναι
ενεργοποιημένο στα sockets των SSH connections σου, δεν προλαβαίνει το
keepalive να «παίξει», γιατί έχει λήξει πιο πριν το timeout του
ενδιάμεσου router.

Αν χρησιμοποιείς SSHv2 κι όχι SSHv1 (που θα 'πρεπε, έτσι κι αλλιώς, λόγω
των security προβλήματων που μπορεί να έχει το SSHv1 πρωτόκολο), και
έχεις πρόσβαση στο ssh_config του server που αντιμετωπίζει το πρόβλημα,
μπορείς να ρυθμίσεις το application level «keepalive» του sshd(8) με τα
ακόλουθα options στο «/etc/ssh/sshd_config»:

    ClientAliveInterval 20  # SSSv2 keepalives every 20 seconds
    ClientAliveCountMax 3   # After X keepalive failures, drop connection

Ανάλογα με το πόσο βλαμμένο είναι το timeout του «ενδιάμεσου» router που
προκαλεί το πρόβλημα, μπορεί να χρειαστεί να μικρύνεις κάπως το
«ClientAliveInterval», αλλά μην το παρακάνεις.  Κάθε SSHv2 keepalive
απαιτεί ένα round-trip από server σε client κι ανάποδα, και τρώει
(ελάχιστο αλλά μη μηδενικό) bandwidth.

- Γιώργος




More information about the Linux-greek-users mailing list