مقدمه
در این مقاله میخوام خیلی ساده و مختصر درباره اتصال به سرورها از طریق پروتکل SSH رو بگم.
و در آخر هم آموزش استفاده از SSH برای اتصال به سرور با استفاده از VSCode رو آموزش بدم.
اتصال به سرور
عبارت SSH کوتاه شده Secure Shell هست. کد اتصال به سرورها به صورت زیر است. این دستور در همه سیستم عاملها از ویندوز گرفته تا لینوکس و مک، قابل استفاده است. کافی است در مک و لینوکس ترمینال را باز کنید (و یا در ویندوز CMD) و از آن استفاده کنید:
ssh USER@SERVER_IP_ADDRESSفرض میکنیم یک سرور ابری با IP زیر داریم. الان با نمونه کد زیر به یوزر روت آن متصل میشویم:
ssh root@123.456.78.90البته میتوانید هنگام اتصال پورت را نیز با فلگ p مشخص کنید. پورت پیشفرض SSH همان 22 است که نیازی به وارد کردن نیست. ولی اگه به خاطر مسائل امنیتی پورت اتصال متفاوت بود میتوانید آن را نیز وارد کنید
ssh root@123.456.78.90 -p 3454وقتی اولین بار به یک سرور متصل میشویم، چیزی شبیه کد زیر میبینیم. در واقع داره به ما میگه که ما قبلا به این سرور متصل نشدیم. آیا میخوای این سرور رو به لیست سرورهای شناخته شده اضافه کنم (خط ۵)؟ که شما با تایپ کردن yes و بعد اینتر این اجازه رو میدید. و بعد هم باید رمز رو وارد کنید.
$ ssh root@123.456.78.90
The authenticity of host '123.456.78.90 (123.456.78.90)' can't be established.
ED25519 key fingerprint is SHA256:jOlL/qzNexzhOWx81O9TKp1MN9xfVnnR3TvkXyZ9Nns.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '94.182.88.212' (ED25519) to the list of known hosts.
root@123.456.78.90's password: دایرکتوری که اطلاعات مربوط به SSH در آن نگهداری میشود، در خانه هر هر کاربر در فولدری به نام .ssh است. مثلا نام یوزر من در ویندوز ehsandevs است. پس باید به C:\Users\ehsandevs\.ssh بروم. در لینوکس نیز اگر یوزری با این نام داشته باشم باید به /home/ehsandevs/.ssh بروم.
# Windows
C:\Users\ehsandevs\.ssh
# Linux (non root users)
/home/ehsandevs/.ssh
# Linux root user
/root/.sshوقتی هنگام ورود برای اولین بار در اون سوال yes رو تایپ میکنید، به فایل known_hosts در .ssh یک خط چیزی شبیه به این اضافه میشود:
123.456.78.90 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLrLYCvwLFXDOwA9v+GaZAK/txicjM+0f9qFOz4/KLy5HnJ3N5+Xz3j9huNqfHVLdDAikI4IPvCg+/UnvwE9134=حالا این موضوع به چه دردی میخوره؟
اگر سرور ابریتون رو ریست کنید (دوباره سیستم عامل رو نصب کنید) و یا اتفاقات دیگهای بیفته، ممکنه موقع اتصال بهتون خطا بده (میگه طبق چیزهایی که من تو known_hosts دارم، شما قبلا به این IP وصل شدید ولی هشها به هم نمیخوره و ممکنه هک بشید و از این داستانا).
شما میتونید خیلی راحت فایل known_hosts رو ویرایش کنید و خط مربوط به این سرور رو پاک کنید.
اتصال با سرور با کلید SSH
میتونید با کلید SSH به سرورتون وصل شید (نیازی به وارد کردن پسورد نیست).
یکم پیچیده به نظر میرسه ولی واقعا ساده است.
اول شما باید یک کلید SSH ایجاد کنیم. در لینوکس و مک ترمینال رو باز کنید. ممکن است در ویندوز با CMD نتوانید این کار رو بکنید.
اگه تو ویندوز گیت رو نصب کرده باشید، یه برنامه باهاش نصب میشه به اسم git bash که در این مرحله باید با اون کار کنید.

ترمینال (و در ویندوز git bash) رو باز کنید و برای تولید کلید ssh دستور زیر رو بزنید.
ssh-keygenبعد از شما چند تا سوال میپرسه (درباره محل ذخیره سازی کلید و …). میتونید اینتر رو بزنید تا مقادیر پیشفرض ست بشه.
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\niami/.ssh/id_rsa):
C:\Users\niami\.ssh>ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (C:\Users\niami/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in C:\Users\niami/.ssh/id_rsa
Your public key has been saved in C:\Users\niami/.ssh/id_rsa.pub
The key fingerprint is:
SHA256:o0VMyamaYsw4OptlMJJtlaaImZOtffHpSPkMBz8P0ok niami@DESKTOP-1MGAQ7Q
The key's randomart image is:
+---[RSA 3072]----+
|       ..o       |
|     . o+        |
|    +  .o        |
|.O +  ..         |
|%+= oo  S        |
|+B= oO = .       |
|oo+.E @          |
|o+ o O +         |
|oo  . + .        |
+----[SHA256]-----+بعد از ایجاد کلید، تو پوشه .ssh دو تا فایل اضافه میشه به اسم id_rsa و id_rsa.pub.
محتویات فایل id_rsa.pub کلید عمومی شماست. (یوزرنیم شما محسوب میشه)
محتویات فایل id_rsa کلید خصوصی شماست. (پسورد شما محسوب میشه)
کلید خصوصی (private) رو تحت هیچ شرایطی نباید در اختیار کسی بگذارید. ولی کلید عمومی (public) رو میتونید به بقیه بدید.
حالا اصلا چرا باید به کسی بدیم؟
وقتی اولین بار با پسورد به سرور ssh زدید، به فولدر .ssh در سروری که به آن متصل شدید بروید. باید فایلی به نام authorized_keys آنجا باشد. اگر نبود ایجاد کنید. سپس کلید عمومی که ایجاد کردید را در آن پیست کنید.
این فایل درواقع تمام کلیدهایی که میتوانند به سرور متصل شوند رو نگهداری میکنه. در هر خط یک کلید عمومی.
دفعه بعد که میخواهید با SSH به سرور متصل شوید، نیازی به وارد کردن پسورد نیست.
البته دستور دیگر نیز وجود دارد به اسم ssh-copy-id. در لینوکس میتوانید در ترمینال آن را وارد کنید و در ویندوز میتوانید از git bash استفاده کنید.
ssh-copy-id root@123.456.78.90این دستور در اولین اتصال با پسورد، به طور خودکار کلید عمومی شما رو در authorized_keys میزاره و شما بعد از اون با همون دستور قدیمی ssh راحت متصل میشید.
$ ssh-copy-id root@123.456.78.90
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/c/Users/niami/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@123.456.78.90's password:
Number of key(s) added: 1
Now try logging into the machine, with:   "ssh 'root@123.456.78.90'"
and check to make sure that only the key(s) you wanted were added.بعد از اجرای موقیت آمیز این دستور، در پایان به ما میگه که حالا میتونید با دستور ssh root@123.456.78.90 به سرور مورد نظر وصل بشید.
ساخت کلید SSH در سرویسهای ارائه دهنده خدمات ابری
در بعضی از این سرویسها، نمیتوان با پسورد به سرور SSH زد و حتما باید با کلید SSH اینکار را کرد. در این سایتها بخشی وجود دارد که در آن میتوان کلید SSH تولید کرد و یا کلیدی که خودتون ایجاد کرده اید را در آن بارگزاری کنید. میتوانید هنگام ایجاد، کلید عمومی یا public خود را به آن بدهید. در واقع انگار این سرویس کلید public شما را در authorized_keys سرورهای خریداری شده قرار میدهد و شما از این پس میتوانید به آن متصل شوید.

دیدگاهتان را بنویسید