هنگام استفاده از SSH برای اتصال به سرورهای لینوکس، ممکن است با خطایی به نام “Broken Pipe” مواجه شوید. این مشکل اغلب به دلیل قطع شدن ارتباط یا عدم فعالیت در طول مدت زمان معین رخ میدهد. در این مقاله، به دلایل بروز این خطا و روشهای رفع آن خواهیم پرداخت.
دلایل بروز خطای SSH Broken Pipe
۱. **عدم فعالیت طولانیمدت:** اگر در حین اتصال SSH فعالیتی انجام ندهید، اتصال ممکن است به طور خودکار قطع شود. این کار برای صرفهجویی در منابع سرور و شبکه انجام میشود.
۲. **قطع شدن شبکه:** مشکلات شبکه، مانند قطع اتصال اینترنت یا ناپایداری شبکه، میتوانند باعث قطع شدن ارتباط SSH شوند.
۳. **تنظیمات Timeout در سرور یا کلاینت:** برخی از سرورها یا کلاینتها به گونهای تنظیم شدهاند که پس از مدت مشخصی عدم فعالیت، اتصال را قطع میکنند.
روشهای رفع خطای SSH Broken Pipe
۱. استفاده از تنظیمات KeepAlive
SSH دارای تنظیماتی است که به کلاینت و سرور اجازه میدهد تا به طور منظم پیامهایی ارسال کنند تا از قطع شدن اتصال جلوگیری کنند. این تنظیمات عبارتاند از:
**در سمت کلاینت (در فایل `~/.ssh/config`):**
Host *
ServerAliveInterval 60
ServerAliveCountMax 5
– **`ServerAliveInterval`:** این گزینه به SSH میگوید هر ۶۰ ثانیه یک پیام به سرور بفرستد تا اتصال حفظ شود.
– **`ServerAliveCountMax`:** تعداد دفعاتی که کلاینت سعی میکند پیام بفرستد قبل از اینکه اتصال را قطع کند.
در سمت سرور (در فایل `/etc/ssh/sshd_config`):
ClientAliveInterval 60
ClientAliveCountMax 5
– **`ClientAliveInterval`:** این گزینه به سرور میگوید هر ۶۰ ثانیه یک پیام به کلاینت بفرستد تا اتصال حفظ شود.
– **`ClientAliveCountMax`:** تعداد دفعاتی که سرور سعی میکند پیام بفرستد قبل از اینکه اتصال را قطع کند.
۲. تغییر تنظیمات TCP KeepAlive
میتوانید با استفاده از پارامترهای `TCPKeepAlive`، ارتباط بین کلاینت و سرور را فعال نگه دارید. این گزینه به طور پیشفرض فعال است اما میتوانید آن را به صورت زیر تأیید یا تغییر دهید:
در فایل `~/.ssh/config` یا `/etc/ssh/ssh_config`:
TCPKeepAlive yes
۳. استفاده از Mosh به جای SSH
[Mosh](https://mosh.org) (Mobile Shell) یک جایگزین برای SSH است که از پروتکل UDP استفاده میکند و برای شرایط ناپایدار شبکه طراحی شده است. Mosh به طور خودکار اتصال را در صورت قطع و وصل شدن شبکه بازسازی میکند و راه حلی مناسب برای جلوگیری از مشکلات Broken Pipe است.
نتیجهگیری
خطای SSH Broken Pipe معمولاً به دلیل قطع شدن اتصال ناشی از عدم فعالیت یا مشکلات شبکه رخ میدهد. با تنظیم صحیح KeepAlive در کلاینت و سرور و یا استفاده از Mosh میتوانید این مشکل را حل کنید و تجربهی بهتری از کار با SSH داشته باشید.