انتقال فایلها از طریق 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 میگذاریم تا در زمان مورد نظری که تعیین میکنیم اجرا شود.
مطلب خوبی بود ..
من محتواهامو انتقال دادم
تشکر ویژه
موثر بود با تشکر
روفگاردن
http://katibenegar.com/roof-graden-design-ideas/