X
تبلیغات
رایتل
چهارشنبه 8 اردیبهشت 1395 @ 11:18

انتقال فایل‌ها از طریق scp بدون پسورد!

انتقال فایل‌ها از طریق scp بدون پسورد!

از طریق scp که مخفف secure copy می‌باشد می‌توان برای انتقال فایل استفاده کرد.

از هردو سرویس SCP و FTPمی‌توان برای انتقال فایل بر روی بستر شبکه LAN/WAN استفاده کرد. با این تفاوت که انتقال فایل در scp امن‌تر است. در انتقال با scp محتویات انتقال رمز‌گذاری می‌شوند در صورتیکه در FTP بصورت clear text است حتی پسورد آن.!

  

 

 

انتقال فایل در حالت عادی با scp به شکل زیر است، که پس از اجرای آن یک پرامپ برای وارد کردن پسورد می‌آید:


scp file.tgz root@SERVER-IP:/tmp


اما درصورتیکه نیاز به گنجاندن این کامند در یک اسکریپت داشته باشیم برای وارد کردن پسورد دچار مشکل می‌شویم. 


روشی که در اینجا به آن اشاره می‌شود برای scp‌ کردن بدون وارد کردن پسورد، استفاده از public key‌می‌باشد.

بدین صورت که یک جفت کلید public/private در سرور local‌  ایجاد می‌کنیم. در ماشین local کلید public‌ ی که ایجاد کرده‌ایم را می‌توانیم به هرکسی بدهیم، اما private key را هرگز!

موضوع جالبی که وجود دارد اینست که هر شخصی می‌تواند هر پیغامی را بوسیله public key شما رمزگذاری کند و فقط شما با استفاده از کلید خصوصی خود آنرا رمزگشایی کنید.


برای ایجاد جفت کلید می‌بایست به شکل زیر عمل کرد:


ssh-keygen -t rsa $

Generating public/private rsa key pair

Enter file in which to save the key ... 

نیاز به وارد کردن پسورد نیست می‌توان [enter] کرد.

Your identification has been saved in ... 

Your public key has been saved in ... 


کلید عمومی و خصوصی ایجاد شده به این نام‌ها هستند:

~/.ssh/id_rsa : identification (private) key

~/.ssh/id_rsa.pub : public key

الان می‌توان کلید عمومی را به هر روشی که مایل باشید به فایل authorized_keys در روت یا home دایرکتوری کاربر دیگری در ماشین یا سرور دوم خود انتقال دهید.

/root/.ssh/authorized_keys


در اینجا از scp برای انتقال آن استفاده می‌کنیم:

scp .ssh/id_rsa.pub root@SERVER-IP:.ssh/authorized_keys


بعضی مواقع فایل authorized_keys در دایرکتوری ssh. وجود ندارد که می‌بایست خودتان اقدام به ساخت آن کنید. 

حالا درصورتی که از ماشین اول به دوم ssh‌ یا scp کنیم دیگر از ما پسورد نخواهد پرسید.


در صورتیکه کلید عمومی را در home دایرکتوری کاربر دیگری غیر از root بریزیم نیاز است که کانفیگ فایل ssh را 

ادیت کنیم و کاربر را مجاز اعلام کنیم.


$ vi /etc/ssh/.sshd_config

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile /home/USER/.ssh/authorized_keys


 $ /etc/init.d/sshd restart


$ vi /etc/ssh/.sshd_config

AllowUsers USER



 برای انجام کارهای روتین و تکراری نوشتن اسکرپپتی که آنها را بصورت اتوماتیک انجام دهد واقعا ضروری می‌باشد. 

در مورد انتقال فایل بین دو سرور نیز که ممکن است بصورت روزانه نیاز به اجرای آن باشد این روش می‌تواند 

مفید باشد و نیاز به درج پسورد کاربر ماشین دوم در اسکریپت نیز نخواهد بود. بدین ترتیب نام فایل حاوی اسکریپت

را در crontab می‌گذاریم تا در زمان مورد نظری که تعیین می‌کنیم اجرا شود.



نظرات (0)
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
نام :
ایمیل :
وب/وبلاگ :
ایمیل شما بعد از ثبت نمایش داده نخواهد شد