circumvention-tools-fa

تونل گذاری SSH 

 SSH یا پوسته امن ( Secure Shell )، یک پروتکل استاندارد است که ارتباطات بین رایانه شما و سرور را رمزنگاری می کند. رمزنگاری مانع از آن می شود که این ارتباطات توسط اداره کنندگان شبکه مشاهده یا دستکاری شوند.   SSH را می توان برای طیف وسیع و گوناگونی از کاربردهای ارتباطی امن بکار برد، ضمن اینکه لاگین کردن امن به یک سرور و انتقال امن فایل (  scp یا SFTP) معمول ترین عملیات می باشند. 

SSH خصوصآ برای دورزدن سانسور اینترنت مفید می باشد، زیرا می تواند تونل های رمزنگاری شذه ای را فراهم آورده مانند یک کلاینت پراکسی جایگزین عمل کند. سانسورگران ممکن است مایل نباشند که SSH را بطور کامل مسدود کنند زیرا SSH برای متعددی غیر از دورزدن سانسور نیز بکار می رود؛ بعنوان مثال، مدیران سیستم برای وارد کردن سرور خود به شبکه اینترنت از آن استفاده می کنند.

استفاده از SSH نیازمند داشتن اکانت در یک دستگاه سرور دارد، سروری که معمولآ از نوع  Unix یا Linux می باشد. برای دورزدن سانسور می بایستی این سرور به اینترنت دسترسی محدود نشده داشته باشد، و در حالت ایده آل، توسط فردی قابل اعتماد اداره شود. برخی شرکت ها اکانت هایی را از روی سرور خود به فروش می گذارند، و بسیاری از پلان های میزبانی وب نیز امکان دسترسی SSH را فراهم می آورند. با مراجعه به آدرس:                                                                                                    http://www.google.com/Top/Computers/Internet/Access_Providers/Unix_Shell_Providers  می توانید فهرستی از ارائه دهندگان اکانت پوسته ای ( Shell accounts ) را ملاحظه خواهید کرد که اکانت ها به قیمت حدود ۱۰-۲ دلار آمریکا در ماه می فروشند. 

یک برنامه SSH با عنوان Open SSH از قبل برروی رایانه های مبتنی بر سیستم عامل یونیکس،‌ لینوکس و مک نصب شده است که بصورت یک برنامه خط فرمان از یک ترمینال بصورت « ssh» اجرا می شود. برای سیستم عامل ویندوز، می توانید از برنامه ای آزاد با عنوان PuTTY برای پیاده سازی SSH استفاده کنید.

تمامی نسخه های اخیر SSH، ایجاد پراکسی SOCKS را پشتیبانی می کنند. پراکسی SOCKS اجازه می دهد تا مرورگر وب و طیف متنوعی از سایر نرم افزارها بتوانند با استفاده از ارتباط رمزنگاری شده SSH بتوانند با اینترنت فیلتر نشده ارتباط برقرار کنند. در این مثال، ما فقط این نوع استفاده از SSH را شرح خواهیم داد. با طی مراحل زیر یک پراکسی SOCKS برروی درگاه شماره ۱۰۸۰ رایانه شما ایجاد خواهد شد.

 خط فرمان ( با استفاده از OpenSSH) در سیستم عامل های لینوکس/یونیکس و مک

OpenSSH از طریق آدرس /http://www.openssh.com در دسترس می باشد، اما این برنامه در سیستم های عامل لینوکس/یونیکس و مک از قبل نصب شده است.

فرمان ssh که شما به اجرا درخواهید آورد شامل یک شماره درگاه محلی (معمولآ ۱۰۸۰)، نام سرور، و یک نام کاربری (نام اکانت) می باشد. خط فرمان شبیه زیر می باشد: 

ssh -D localportnumber accountname@servername 

بعنوان مثال:

ssh_1

از شما خواسته خواهد شد که رمز عبور خود را وارد کنید، و سپس وارد سرور خواهید شد. با استفاده از گزینه D-، یک پراکسی SOCKS  محلی ایجاد شده و تا زمانی که ارتباط شما با سرور برقرار باشد، وجود خواهد داشت. نکته مهم: شما اکنون بایستی کلید میزبان را تایید اعتبار کرده و برنامه های کاربردی را پیکربندی کنید، در غیر اینصورت از تونلی که ایجاد کرده اید، استفاده نمی کنید.

رابطه کاربری گرافیک برای ویندوز (با استفاده از  PuTTY)

 PuTTY را می توان با استفاده از آدرس:  http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html بدست آورد. شما می توانید برنامه putty.exe را برای مصارف آتی برروی هارد درایو خود ذخیره کنید یا آن را مستقیمآ از روی وبسایت اجرا کنید ( اغلب این کار را می توان از روی رایانه های مشترک یا عمومی،‌مانند رایانه های موجود در یک کتابخانه یا کافه اینترنتی، انجام داد.)

زمانیکه برنامه  PuTTY را آغاز می کنید، یک پنجره گفتگو برای پیکربندی جلسه کاری ظاهر می شود. ابتدا نام میزبان (آدرس) سرور SSH که می خواهید به آن متصل شوید(مثلآ example.com ) وارد می کنید. اگر فقط آدرس IP را بدانید یا اگر مسدودشدن  DNS مانع از استفاده شما از نام میزبان می شود، می توانید به جای آن از آدرس  IP استفاده کنید. اگر این مراحل را مکررآ انجام دهید، می توانید یک پروفایل  PuTTY که این گزینه ها و همچنین گزینه های مشروحه زیر را که در هر بار از آنها استفاده خواهید کرد در بر می گیرد، ایجاد کنید.

PuTTY_config_1

سپس، در فهرست Category، مورد Connection > SSH > Tunnels را انتخاب کنید.

شماره ۱۰۸۰ برای درگاه منبع وارد کنید، و کادرهای مربع شکل Dynamic و IPv4 را علامت بزنید. 

PuTTY_config_2

اکنون برروی  Add و سپس برروی Open کلیک کنید. ارتباط با سرور برقرار شده، و یک پنجره جدید باز می شود، که در آن از شما خواسته خواهد شد تا نام کاربری و رمز عبور خود را وارد کنید.

اطلاعات مربوطه را وارد کنید تا وارد سرور شده و یک خط فرمان از طرف سرور دریافت کنید. سپس پراکسی SOCKS ایجاد می شود. نکته مهم: اکنون بایستی کلید میزبان را تایید اعتبار کرده و برنامه های کاربردی خود را پیکربندی کنید، در غیر اینصورت شما از تونلی که ایجاد کرده اید، استفاده نمی کنید.

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

در اولین باری که شما به یک سرور وصل می شوید، بایستی از شما خواسته شود که host key fingerprint را برای آن سرور تایید اعتبار کنید. اثر انگشت کلید میزبان در واقع توالی بلندی از حروف و اعداد ( hexadecimal ) مانند  57:ff:c9:60:10:17:67:bc:5c:00:85:37:20:95:36: است که به صورت کاملآ امن، یک سرور خاص را شناسایی می کند. چک کردن اثر انگشت کلید میزبان، یک معیار امنیتی برای تایید این موضوع است که شما با همان سروری در ارتباط هستید که فکرش را می کردید، و اینکه ارتباط رمزنگاری شده ای که بین شما و سرور مذکور برقرار است، قابل شنود نیست.

SSH امکان تایید اعتبار کلید میزبان را بطور خودکار فراهم نمی کند. برای بهره مندشدن از منافع این مکانیزم امنیتی، می بایستی مقدار عددی اثر انگشت کلید میزبان را با اداره کننده سروری که از خدمات ان استفاده می کنید، چک نمایید، یا از یک فرد قابل اعتماد درخواست کنید که با همان سرور ارتباط برقرار کند و ببیند که آیا او نیز اثر انگشت مشابهی را دریافت می دارد.

تایید اعتبار اثر انگشت کلید میزبان از آن جهت اهمیت دارد که تضمین می کند SSH از حریم خصوصی ارتباطات شما در برابر استراق سمع مراقبت می کند، اما در صورتیکه هدف شما فقط دور زدن سانسور اینترنت بوده و اهمیتی برای اینکه اداره کننده شبکه محتوای ارتباطات شما را مشاهده کند، قائل نباشید، تایید اعتبار اثر انگشت، ضرورت ندارد.

پیکربندی برنامه های کاربردی جهت استفاده از پراکسی

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

هنگامی که پراکسی فعال شد، شما باید نرم افزارهای کاربردی را جهت استفاده از آن پیکربندی کنید. با استفاده از مراحل فوق، پراکسی مزبور یک پراکسی  SOCKS خواهد بود که درlocalhost ، درگاه شماره ۱۰۸۰ ( که همچنین با عنوان  127.0.0.1 درگاه ۱۰۸۰ شناخته می شود) قرار گرفته است. شما می بایستی اطمینان حاصل کنید که برنامه های کاربردی شما بگونه ای پیکربندی شوند که مانع از نشت DNS شوند. نشت DNS از میزان تاثیر SSH هم به لحاظ مراقبت از حریم خصوصی و هم از لحاظ دور زدن سانسور اینترنت خواهد کاست. 

 گزینه های دیگر

تا بحال، تمامی این فرمان ها، نمایشگر فراخوانی هستند در یک دستگاه واقع در نقطه ای دور که از طریق آن شما می توانید هر فرمانی را که دستگاه برای تان فراهم می کند، به اجرا در آورید. گاهی اوقات ممکن است بخواهید که یک فرمان مستقل را در دستگاه دور به اجراء در آورد و سپس به خط فرمان در زایانه محلی خود بازگردید. این کار را با داخل گیومه قرار دادن فرمانی که قرار است در دستگاه دور به اجراء در آید، می توان انجام داد.

ssh remoteusername@othermachine.domain.org 'mkdir /home/myname/newdir'

گاهی اوقات، آنچه که شما نیاز دارید آنست که اجرای فرمان های زمانبر را به دستگاه دور احاله کنید، اما شما مطمپن نیستید که آیا زمان لازم را برای اینکار در طی جلسه کاری ssh جاری خود در اختیار دارید. اگر ارتباط از راه دور خود را پیش از آنکه اجرای فرمان به اتمام رسیده باشد، ببندید، آن فرمان لغو خواهد شد. جهت پیشگیری از وقوع چنین امری،می توان از طریق ssh یک  screen از راه دور را نمایان کرده و سپس آن را جدا کرده و هربار می خواهید با آن مجددا ارتباط برقرار کنید. برای جداسازی یک  screen جلسه کاری از راه دور، فقط کافی است که ارتباط ssh را ببندید:  screen جلسه کاری جداشده در دستگاه دور همچنان در حال اجرا باقی خواهد ماند. 

 ssh گزینه های متعدد دیگری را نیز ارائه می دهد که شرح آن در راهنمای مربوطه آمده است. شما همچنین می توانید سیستم های دلخواه خود را بوجود بیاورید که به شما اجازه دهند لاگین کرده یا فرمان ها را بدون مشخص نمودن رمز عبور در هر بار استفاده به اجرا درآورید. تنظیم های لازم در این رابطه پیچیده می باشند، اما می توانند شما را از زحمت تایپ کردن های بسیار رهایی بخشند: سعی کنید تا  

"ssh-keygen" ،  "ssh-add"،  و "authorized_keys را در اینترنت جستجو کنید. 

 scp: کپی کردن فایل

امکانات پروتکل  SSH ورای فرمان ابتدایی  SSH  می باشد. یکی از فرمانهای مفید مبتنی بر پروتکل SSH ، فرمان scp است. مثال زیر یک فایل را از دایرکتوری جاری دستگاه محلی شما به دایرکتوری که در یک دستگاه دور کپی می کند. 

scp myprog.py me@othermachine.domain.org:/home/me/stuff 

حواستان باشد که این فرمان، که برروی هرگونه فایلی که از قبل در آدرس مزبور و با نام  /home/me/stuff/myprog.py   وجود داشته باشد، بازنویسی می کند( یا در صورتیکه فایلی با همان نام در آدرس مزبور وجود داشته باشد و شما مجاز به دستکاری آن نباشید،‌یک پیام خطا دریافت خواهید کرد.) اگر /home/me دایرکتوری خانگی شما باشد، آنگاه دایرکتوری هدف را می توان خلاصه کرد. 

scp myprog.py me@othermachine.domain.org:/home/me/stuff 

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

scp myprog.py me@othermachine.domain.org:stuff

فایل موجود در دستگاه دور فایلی است بنام interview.txt  که در زیر شاخه دایرکتوری خانه شما قرار دارد.

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

فرمان scp را همچنین می توان برای کپی کردن فایل از یک دستگاه دور به دستگاه دور دیگر بکار برد.

scp user1@host1:file1 user2@host2:otherdir

برای آنکه همه فایل ها و زیر دایرکتوری ها ( زیر شاخه ها) ی یک دایرکتوری را کپی کنید، از گزینه -r استفاده نمایید.

scp -r user1@host1:dir1 user2@host2:dir2

برای کسب اطلاعات بیشتر و آشنایی با گزنه های دیگر، به صفحه راهنمای  مراجعه کنید. 

RSYNC :انتقال خودکار حجم بزرگ داده ها و نسخه های پشتیبان

rsync یک فرمان بسیار مفید است، که دایرکتوری موجود در دستگاه دور یا دایرکتوری محلی مطابقت می دهد. ما در اینجا بدان اشاره می کنیم زیرا همانند ssh، این فرمان نیز برای انجام عملیات شبکه ای مفید می باشد، و بخاطر اینکه پروتکل ssh به عنوان انتقال زمینه برای rsync توصیه می شود.

مثال زیر مثالی ساده و مفید است. این خط فرمان فایل ها را از دایرکتوری محلی /home/myname/docs به دایرکتوری بنام   backup/  در دایرکتوری خانه سیستم  quantum.example.edursync کپی می کند. rsync عملآ از مقدار کپی های ضروری که از درون گذرگاههای کنترلی مختلف انجام می شوند، می کاهد.  

rsync -e ssh -a /home/myname/docs me@quantum.example.edu:backup/

گزینه -e  فرمان ssh، از پروتکل ssh در پس زمینه برای انتقال اطلاعات استفاده می کند. گزینه -a ( که مخفف "archive") است، کلیه فایل ها و اطلاعات را در یک دایرکتوری مشخص کپی می کند. اگر می خواهید فایل ها همانطور که کپی می شوند از سیستم محلی پاک شوند، گزینه  delete-- را اضافه کنید. به صفحه راهنمای rsync برای کسب اطلاعات بیشتر رجوع کنید. 

راحتی بیشتر با استفاده زیادتر از  SSH

اگر از SSH برای مرتبط شدن با سرورهای مختلف استفاده می کنید، ممکن است اغلب به خاطر تایپ کردن غلط نام های کاربری یا حتی نام های میزبان، دچار اشتباه شوید (فرض کنید باید ترتیب ۲۰ نام کاربری/ میزبان مختلف را به خاطر بسپارید). خوشبختانه SSH یک روش ساده برای مدیریت اطلاعات از درون یک فایل پیکربندی ارائه می دهد. 

فایل پیکربندی بصورت یک فایل مخفی در شاخه خانه شما در دایرکتوری ssh ( مسیر کامل آن  /home/jsmith/.ssh/config – اگر این فایل وجود ندارد، می توانید آن را ایجاد کنید). از ویرایشگر دلخواه خود برای بازکردن این فایل و مشخص کردن میزبان ها مانند زیر استفاده کنید: 

Host dev 

HostName example.com 

User fc 

شما می توانید چندین میزبان مانند این در فایل پیکربندی بوجود بیاورید و پس از آنکه فایل را ذخیره کردید، با میزبانی که آن را "dev" نامیده اید از طریق اجرا کردن خط فرمان زیر ارتباط برقرار کنید:

ssh dev