وصل شدن به vps از طریق Public Key

این چیزی که دارم مینویسم رو شاید خیلیا بلد باشن و واسشون ساده باشه اما واسه اونایی که تازه وارد دنیای لینوکس و کارهای مربوط به سرور شدن میتونه خیلی مفید باشه.

همونطور که میدونید یکی از راه های وارد شدن به سرور لینوکسی از طریق ssh هست که به این صورت میتونید وارد سروری که دارید بشید:

ssh user@ip_address

اما میشه راه بهتر و امن تری رو برای وارد به سرور انتخاب کرد.

کلید های SSH بصورت جفت(کلید عمومی و کلید خصوصی) هستن.شما میتونید با ساختن یک کلید عمومی و خصوصی روی سیستمی که باهاش کار میکنید و اختصاص دادن اون به سرورتون بدون اینکه بخواید رمز وارد کنید وارد سرورتون بشید!

مرحله اول: ساختن جفت کلید SSH

اگه روی سیستم خودتون این فولدر رو ندارید باید اون رو بسازید:

mkdir ~/.ssh
chmod 700 ~/.ssh

و حالا باید کلید های جفت SSH رو بسازید:

ssh-keygen -t rsa -b 4096

قسمت -t rsa به این معنی هست که یک کلید جفتی RSA تولید می کنید و قسمت -b 4096 به این معنی هست که شما دارید کلید های ۴۰۹۶ بیتی تولید می کنید.

بعد از اجرای این دستور باید با همچین چیزی مواجه بشید:

اگر از شما پرسیده شد که کجا این فایل ذخیره بشه بدون نوشتن چیزی Enter اینتر بزنید.محل پیش فرض ذخیره ی کلید های SSH در قسمت:

 ~/.ssh/id_rsa

هست. و حالا شما بعد از اجرای این دستور در فولدر .ssh باید دوتا فایل به اسم های id_rsa که شامل کلید خصوصی (private key) هست و id_rsa.pub که شامل کلید عمومی (public key) هست مواجه بشید.

مرحله دوم: آپلود کردن کلید عمومی به سرور

بعد از اینکه وارد سرورتون شدید باید فولدر .ssh رو بسازید.

cd ~
mkdir .ssh

و حالا باید محتویات داخل فایل id_rsa.pub رو به سرورتون منتقل کنید.

با دستور (secure copy (SCP میتونید اینکار رو به راحتی انجام بدید.

scp ~/.ssh/id_rsa.pub user@example.com:~/.ssh/uploaded_key.pub 

دستور scp دوتا آرگومان لازم داره که آرگومان اول در اینجا آدرس فایل کلید عمومی شما روی سیستم خودتون هست و آرگومان دوم محل ذخیره فایل کلید عمومی در سروری که دارید.

برای مثال:

scp <local location of the public key> <remote user>@<remote server address>:<destination file>

و حالا باید محتویات فایل uploaded_key.pub داخل فایلی به اسم authorized_keys بریزیم.

cat uploaded_key.pub >> authorized_keys

در نهایت باید کمی تغییر در فایل /etc/ssh/sshd_config بدید.

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

اگه این خط ها وجود داشتن و کامنت بودن، # رو از اول خط اونها بردارید.

و حالا باید سرویس SSH سرور رو یک بار ریستارت کنید.

sudo service ssh restart

حالا میتونید به راحتی وارد سرورتون بشید.برای اینکار باید آدرس فایل کلید عمومی رو قبل از نوشتن نام کاربری سرورتون بنویسید.

به این شکل:

ssh -i <path to your private key> <user>@<remote server address>
 Example : ssh -i ~/.ssh/id_rsa root@192.168.56.166

مرحله سوم: غیرفعال کردن رمز عبور برای وارد شدن به سرور

این قسمت رو میتونید انجام ندید ولی برای امن تر کردن سرورتون میتونید نیاز به وارد کردن رمز عبور برای وارد شدن به سرورتون رو غیر فعال کنید. برای اینکار باید تغییراتی در فایل /etc/ssh/sshd_config بدید:

PasswordAuthentication no

و حالا دوباره باید سرویس SSH رو ریستارت کنید که این تنظیم ذخیره بشه. حالا دیگه نمیتونید با رمز وارد سرور بشید و فقط باید از کلید عمومی و فقط سیستم خودتون وارد سرور بشید.


تنظیمات اضافی

شما میتونید پورت پیش فرض برای وارد شدن به سرورتون رو هم عوض کنید چون بصورت پیش فرض پورت ۲۲ برای وارد شدن به سرورها در نظر گرفته شده که احتمال حمله به سرورتون رو زیاد میکنه. برایبستن دسترسی از این پورت میتونید قسمت زیر رو کامنت کنید تا از این اتفاق جلوگیری کنید.

#Port 22


امیدوارم این آموزش به شما کمک کرده باشه.