من خیلی از اوقات مجبورم همزمان با سرورهای مختلفی کار کنم و ترمینالهای متعددی برای ssh زدن به هر کدام باز کنم. گاهی اوقات آنها را با هم اشتباه میگیرم و پیش آمده که به جای سرور دولوپ، سرور پروداکشن را ریاستارت کنم. حتما راهحلهای مختلفی برای حل این مشکل هست. کاری که من کردم این بود:
برای هر کدام از سرورها، رنگی مشخص کردم و کاری کردم که وقتی به آن سرور وصل میشوم، ترمینال با رنگ خودش باز شود. در این صورت دیگر کمتر سرور آبی را با سرور قرمز اشتباه میگیرم!
مراحل اجرای این کار در اوبونتو از این قرار است:
- ساختن کلید احراز هویت ssh و کپی کردنش تو سرورها
- ذخیره یوزر و آدرس سرورها در کانفیگ ssh
- ایجاد پروفایلهای مختلف در تنظیمات GNOME Terminal
- نوشتن alias برای دستور ssh
- و یک تغییر اضافه برای تیماکسیها
مرحله ۱ و ۲ را فقط برای این که این لیست کامل باشد نوشتم.
۳. ایجاد پروفایلهای مختلف در تنظیمات GNOME Terminal
من از ترمینال پیشفرض اوبونتو استفاده میکنم. در تنظیمات آن میتوان پروفایلهای متفاوتی ایجاد کرد. همیشه برایم سوال بود که این پروفایلها به چه کار میآیند که به جواب سوالم رسیدم. در Prefrences، پروفایلهای جدیدی ایجاد کنید و نام پروفایل را برابر با نامی که در مرحله قبل برای هر سرور انتخاب کردهاید قرار دهید. بعد از ایجاد پروفایل، روی نامش کلیک کنید و در تب Colors، تیک گزینهٔ Use colors from system theme را بردارید و رنگ دلخواه خود را تعیین کنید.
۴. نوشتن alias برای دستور ssh
متن زیر را متناسب با بشتان در zshrc. یا bashrc. یا هر جای دیگر که لازم است قرار دهید.
custom_ssh () {
if [[ "$1" =~ ^(dev|api)$ ]]; then
gnome-terminal --window-with-profile $1 -- ssh $1
else
ssh $1
fi
}
alias ssh='custom_ssh'
نام سرور و پروفایلی که من انتخاب کرده بودم، dev و api بود. هر نامی که در دو مرحلهٔ قبل تعیین کردید را با اینها جایگزین کنید و اگر بیشتر هستند، با "|" از هم جدایشان کنید و در همان جا بنویسید. اجرای "source .bashrc" را بعد از ذخیره کردنش فراموش نکنید. این هم از نتیجهٔ کار:
اگر بخواهید، میتوانید برای ssh به سرورهای جدید هم پروفایلی بسازید تا با سیستم خودتان اشتباهشان نگیرید. من اسم این پروفایل را گذاشتهام "ssh". کافی است "ssh $1" که بعد از else آمده را با این جایگزین کنید:
gnome-terminal --window-with-profile ssh -- ssh $1
۵. یک تغییر اضافه برای تیماکسیها
من برای کار بر روی سیستمهای ریموت از تیماکس استفاده میکنم. به صورتی که معمولا یک سشن به نام من روی آن سرور هست و پنجرههای مختلفی روی آن باز است. این جا نمیخواهم از قابلیتهای tmux بگویم. با این تغییر، بعد از اتصال به سرور، مستقیم به سشن مورد نظر وصل میشوم و یا اگر سشنی با آن نام وجود نداشته باشد، ساخته میشود. بدیهی است که از قبل باید tmux روی سرور نصب باشد. برای این کار کافی است به جای
gnome-terminal --window-with-profile $1 -- ssh $1
این را جایگزین کنید:
gnome-terminal --window-with-profile $1 -- ssh $1 -t 'tmux a -t khoshi || tmux new -s khoshi'
تغییرات دیگری هم برای اتصال به vpn قبل از ssh به سرور (معمولا vpnهای سازمانی) هست که باشد برای بعد. در مورد دردسرهایم با vpnها و راهحلهایشان باید جداگانه توضیح دهم.