از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
با استفاده از فایل پیکربندی SSH
سرفصلهای مطلب
اگر مرتباً از طریق SSH به چندین سیستم راه دور متصل می شوید، آدرس های IP مختلف، نام های کاربری، پورت های غیر استاندارد و command-line گزینه ها می توانند چالش برانگیز یا حتی غیرممکن باشند.
یک رویکرد ایجاد الف است bash نام مستعار برای هر اتصال سرور راه دور. با این حال، راه حل بهتر و ساده تری برای این مشکل وجود دارد. OpenSSH به شما امکان می دهد یک فایل پیکربندی برای هر کاربر تنظیم کنید که در آن می توانید گزینه های مختلف SSH را برای هر دستگاه راه دوری که به آن متصل می شوید ذخیره کنید.
این راهنما اصول اولیه فایل پیکربندی کلاینت SSH را پوشش می دهد و برخی از رایج ترین گزینه ها را برجسته می کند.
پیش نیازها
ما فرض میکنیم که از لینوکس یا macOS با یک کلاینت OpenSSH استفاده میکنید.
محل فایل پیکربندی SSH
فایل پیکربندی سمت کلاینت OpenSSH نامگذاری شده است config، و ساکن در .ssh دایرکتوری زیر فهرست اصلی کاربر.
را ~/.ssh دایرکتوری به طور خودکار زمانی که کاربر اجرا می کند ایجاد می شود ssh
فرمان برای اولین بار اگر دایرکتوری وجود نداشته باشد روی سیستم خود را ایجاد کنید با:
mkdir -p ~/.ssh && chmod 700 ~/.ssh
به طور پیش فرض، فایل پیکربندی SSH ممکن است وجود نداشته باشد، بنابراین ممکن است لازم باشد آن را با استفاده از آن ایجاد کنید touch دستور:
touch ~/.ssh/config
برای امنیت، فایل باید فقط توسط کاربر قابل خواندن و نوشتن باشد و توسط دیگران قابل دسترسی نباشد:
chmod 600 ~/.ssh/config
ساختار و الگوهای فایل پیکربندی SSH
فایل پیکربندی SSH ساختار زیر را دارد:
Host hostname1
SSH_OPTION value
SSH_OPTION value
Host hostname2
SSH_OPTION value
Host *
SSH_OPTION value
محتویات فایل پیکربندی کلاینت SSH در بند (بخش) سازماندهی شده است.
هر بند با این شروع می شود Host دستورالعمل و شامل گزینه های خاص SSH است که هنگام اتصال به هاست های منطبق اعمال می شود.
تورفتگی لازم نیست، اما توصیه می شود زیرا خواندن فایل را آسان تر می کند.
را Host مقدار میتواند یک نام میزبان، آدرس IP، یا الگو، یا فهرستی از الگوها باشد. هر الگو میتواند حاوی صفر یا چند کاراکتر بدون فاصله یا یکی از مشخصکنندههای الگوی زیر باشد:
*– با صفر یا چند کاراکتر مطابقت دارد. (مثلاHost *با همه میزبان ها مطابقت دارد، در حالی که192.168.0.*مسابقات میزبان در192.168.0.0/24زیر شبکه.)?– دقیقاً با یک شخصیت مطابقت دارد. (به عنوان مثال الگو،Host 10.10.0.?با همه میزبان ها مطابقت دارد10.10.0.[0-9]محدوده.)!– هنگامی که در شروع یک الگو استفاده می شود، مطابقت را نفی می کند. (مثلاHost 10.10.0.* !10.10.0.5با هر کدام مطابقت دارد host در10.10.0.0/24زیر شبکه به جز10.10.0.5.)
کلاینت SSH فایل را از بالا به پایین پردازش می کند. اگر بیش از یک الگو مطابقت داشته باشد، گزینههای اولین مصراع منطبق اولویت دارند. بنابراین بیشتر host-اعلامیه های خاص باید در ابتدای فایل داده شوند و موارد کلی تر لغو شود (مانند Host *) در انتهای فایل.
با تایپ کردن می توانید لیست کاملی از گزینه های SSH موجود را پیدا کنید man ssh_config در شما terminal یا با مراجعه به مرد ssh_config page
.
فایل کانفیگ SSH توسط برنامه های دیگری مانند scp
، sftp
، و rsync
.
مثال پایه
اکنون که اصول اولیه فایل پیکربندی SSH را پوشش دادیم، به مثال زیر نگاه می کنیم.
به طور معمول، هنگام اتصال به یک سرور راه دور از طریق SSH، نام کاربری راه دور، نام میزبان و پورت را مشخص می کنید. به عنوان مثال، به عنوان یک کاربر با نام وارد شوید john به a host تماس گرفت dev.example.com روی بندر 2322 از خط فرمان، باید تایپ کنید:
ssh john@dev.example.com -p 2322
برای اتصال به سرور با استفاده از همان گزینه های ارائه شده در دستور بالا با تایپ کردن ssh dev، خطوط زیر را در خود اضافه کنید "~/.ssh/config فایل:
Host dev
HostName dev.example.com
User john
Port 2322
حالا وقتی تایپ می کنید ssh dev، سرویس گیرنده ssh فایل پیکربندی را می خواند و از جزئیات اتصال که برای آن مشخص شده است استفاده می کند dev host:
ssh dev
مثال پیشرفته: الگوها و تقدم
این مثال اطلاعات دقیق تری در مورد host الگوها و تقدم گزینه
فایل نمونه زیر را در نظر بگیرید:
Host targaryen
HostName 192.168.1.10
User daenerys
Port 7654
IdentityFile ~/.ssh/targaryen.key
Host tyrell
HostName 192.168.10.20
Host martell
HostName 192.168.10.50
Host *ell
user oberyn
Host * !martell
LogLevel INFO
Host *
User root
Compression yes
-
وقتی تایپ میکنی
ssh targaryen، کلاینت ssh فایل را می خواند و گزینه های مربوط به اولین مسابقه را اعمال می کندHost targaryen. سپس بندهای بعدی را یکی یکی از نظر الگوی منطبق بررسی می کند. تطبیق بعدی استHost * !martell(منظور همه میزبان ها به جزmartell) و گزینه اتصال را از این بند اعمال می کند. آخرین تعریفHost *همچنین مطابقت دارد، اما کلاینت ssh فقط آن را می گیردCompressionگزینه زیراUserگزینه قبلاً در قسمت تعریف شده استHost targaryenبندلیست کامل گزینه هایی که هنگام تایپ استفاده می شوند
ssh targaryenبه شرح زیر است:HostName 192.168.1.10 User daenerys Port 7654 IdentityFile ~/.ssh/targaryen.key LogLevel INFO Compression yes -
هنگام دویدن
ssh tyrellتطبیق host الگوها عبارتند از:Host tyrell،Host *ell،Host * !martellوHost *. گزینه های مورد استفاده در این مورد عبارتند از:HostName 192.168.10.20 User oberyn LogLevel INFO Compression yes -
اگر بدوید
ssh martell، تطبیق host الگوها عبارتند از:Host martell،Host *ellوHost *. گزینه های مورد استفاده در این مورد عبارتند از:HostName 192.168.10.50 User oberyn Compression yes -
برای تمام اتصالات دیگر، کلاینت ssh از گزینه های مشخص شده در
Host * !martellوHost *بخش ها
گزینه های لغو
کلاینت SSH پیکربندی خود را به ترتیب اولویت زیر می خواند:
- گزینه های مشخص شده از خط فرمان
- گزینه های تعریف شده در
~/.ssh/config. - گزینه های تعریف شده در کل سیستم
/etc/ssh/ssh_configفایل
برای لغو یک گزینه، آن را مشخص کنید روی خط فرمان به عنوان مثال، اگر تعریف زیر را دارید:
Host dev
HostName dev.example.com
User john
Port 2322
و شما می خواهید از همه گزینه های دیگر استفاده کنید مگر اینکه به عنوان کاربر متصل شوید root به جای john به سادگی کاربر را مشخص کنید روی خط فرمان:
ssh -o "User=root" dev
را -F (configfile) گزینه به شما امکان می دهد یک فایل پیکربندی جایگزین برای هر کاربر را مشخص کنید.
برای اینکه به کلاینت SSH بگویید تمام گزینه های مشخص شده در فایل پیکربندی SSH را نادیده بگیرد، از:
ssh -F /dev/null user@example.com
نتیجه گیری
ما به شما نشان دادهایم که چگونه فایل پیکربندی SSH کاربر خود را برای سادهسازی مدیریت چندین اتصال راه دور پیکربندی کنید.
همچنین ممکن است بخواهید احراز هویت مبتنی بر کلید SSH را تنظیم کنید تا بتوانید بدون وارد کردن رمز عبور به سرورهای لینوکس خود متصل شوید.
به طور پیش فرض، SSH گوش می دهد روی پورت 22. تغییر پورت پیش فرض SSH با کاهش خطر حملات خودکار، یک لایه امنیتی اضافی به سرور شما اضافه می کند.
اگر سوالی دارید، لطفا در زیر نظر دهید.
terminal
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1404-12-15 16:14:07

