انتقال فایل بین چند کامپیوتر یا تلفن همراه با استفاده از ssh

2018-12-02
10 دقیقه مطالعه

حتما شما هم اگه چندتا کامپیوتر توی خونه داشته باشین انتقال دیتا بین این‌ها در حالت عادی براتون کار عذاب آوری خواهد بود، یا اگه می‌خواین از کامپیوترتون چیزی رو بریزین توی گوشی موبایل‌تون ممکنه از کابل USB استفاده کنین که خب این هم تا حد زیادی اصلا راحت نیست ! خب اینجا می‌خوایم یه تریک ساده برای انتقال فایل بین چندتا دستگاه با سرعت انتقال خیلی بالا یاد بگیریم که کلی وقتمون رو ذخیره می‌کنه و به کارمون سرعت می‌بخشه. با این کار دیگه نیازی به هیچ کابل یا روش‌های سختی نیست، فقط کافیه دستگاه‌های مورد نظرمون به یک شبکه وصل باشن ! که خب منطقا بیشتر اوقات یه مودم داریم و همه‌ی دستگاه‌هامون به همون یه مودم وصله :))

این روشی که قراره بگم برای سیستم عامل گنو/لینوکس هست و کامپیوتری که می‌خواین ازش اطلاعات بگیرین یا بهش بدین باید سیستم عاملش یه توزیع گنو/لینوکسی داشته باشه، اما سیستم عامل کلاینت مهم نیست و تقریبا با هر سیستم عاملی نرم افزار کلاینت برای این کار موجوده و به سادگی می‌تونین عمل انتقال رو انجام بدین. خب هدف ما اینجا استفاده از ssh file transfer protocol یا همون sftp هست. کافیه بسته‌ی مربوط بهش رو در توزیع خودتون نصب کنین.

هر توزیعی که داشته باشین با استفاده از مدیر بسته‌ش می‌تونین این کارو انجام بدین.

اگر آرچ دارین این دستور رو بزنین:

$ sudo pacman -S openssh

اگر اوبونتو یا دبیان دارین این دستور رو بزنین:

$ sudo apt install openssh

برای فدورا هم از دستور زیر استفاده کنین:

$ sudo dnf install openssh

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

بعد از اینکه بسته نصب شد باید سرویس sshd رو فعال کنیم، توی توزیع‌هایی که از init.d استفاده می‌کنن (عموما توزیع‌های قدیمی) می‌تونید از دستور زیر کمک بگیرین:

$ sudo service sshd start

و توی توزیع‌هایی که از systemd استفاده می‌کنن با این دستور می‌تونین این سرویس رو استارت کنین:

$ sudo systemctl start sshd

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

$ sudo systemctl enable sshd

خب حالا تنها چیزی که لازم داریم اینه که آی‌پی کامپیوترمون رو روی شبکه‌ی محلی پیدا کنیم. برای این کار دستور زیر رو بزنین:

$ ip addr show

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

➜  ~ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether fc:aa:14:37:f1:c4 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.4/24 brd 192.168.1.255 scope global dynamic noprefixroute enp3s0
       valid_lft 81688sec preferred_lft 81688sec
    inet6 fe80::edbb:424e:2e4a:d25a/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

تنها کاری که نیازه انجام بدین اینه که ببینین چه آی‌پی‌ای به کامپیوترتون توی شبکه‌ی محلی اختصاص داده شده و این رو با پیدا کردن اینترفیس شبکه‌تون می‌تونین پیدا کنین. برای مثال اینترفیس مودم من enp3s0 هست و آی‌پی مقابل inet یعنی 192.168.1.4 میشه آی‌پی کامپیوتر من توی شبکه‌ی محلی.

خب حالا تنها چیزی که لازم داریم یه کلاینت sftp هست.

برای گنو/لینوکس، مک و ویندوز ممکنه چندین گزینه داشته باشین اما پیشنهاد من filezilla هست که بسته به سیستم عامل‌تون می‌تونین از سایت خودش بارگیری کنین یا اینکه از مخازن توزیع‌تون نصبش کنین. بعد از اینکه filezilla رو نصب کردین کافیه بازش کنین و آی‌پی کامپیوتر روی شبکه‌ی محلی به همراه نام کاربری و رمز عبور کاربر خودتون روی کامپیوتر سرور رو بدین و به سادگی از کامپیوتر مبدا به کامپیوتر مقصد و برعکس فایل‌هاتون رو انتقال بدین.

برای اندروید بیشتر نرم افزارهای مدیریت فایل از sftp پشتیبانی می‌کنن، من طرفدار نرم افزار آزادم اما معادل مناسبی که به راحتی fx file manager باشه پیدا نکردم (اگر شما می‌شناسین ممنون میشم بهم معرفی کنین)، به شما هم همین رو توصیه می‌کنم اما از مدیر فایل‌هایی مثل ES هم می‌تونین استفاده کنین همچنین کلاینت‌های مخصوص این کار هم وجود داره اما خب مدیریت فایل توشون به سادگی این‌ها نیست.

من اینجا توضیح می‌دم با fx چجوری وصل بشین و هر فایل منیجری هم نصب کنین در نهایت روند کار همینه.

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

fx file explorer

بعدش باید یه کانکشن جدید بسازین، برای این‌کار علامت + رو بزنین و بعدش طبق تصویر گزینه‌ی sftp رو انتخاب کنین:

fx file explorer

حالا با توجه به آی‌پی کامپیوتر خودتون روی شبکه‌ی محلی و نام کاربری و رمز عبور همون یوزر فیلدهای این صفحه رو پر کنید و کانکشن رو ذخیره کنید:

fx file explorer

بعد از انجام این کار شما صاحب یه کانکشن می‌شین که با وصل شدن بهش می‌تونین به فایل‌های هوم یوزر مورد نظر دسترسی کامل داشته باشین:

fx file explorer


خب کارمون تموم شد و از این به بعد شما می‌تونین خیلی راحت بین دستگاه‌هاتون که به یه شبکه وصلن فایل انتقال بدین اما همونطور که خوندین، در روشی که توی این پست گفتم کامپیوتری که قراره نقش میزبان رو بازی کنه و سرور sftp روش نصب کنیم، نیازه که حتما از سیستم عامل گنو/لینوکس استفاده کنه و اصولی‌ترین روش هم همینه ! اما اگه شما از سیستم عامل‌های دیگه استفاده می‌کنین احتمالا یه جستجو برای sftp server در سیستم عامل خودتون، به یه برنامه‌ای برسین که کار مشابه رو انجام بده یعنی یه sftp server روی سیستم عامل‌هایی مثل مک یا ویندوز راه بندازه !


سورس این پست رو می‌تونین از اینجا ببینین :)