SSH - طريقة لنقل الملفات دون فتح جلسة SFTP منفصلة؟

StackOverflow https://stackoverflow.com/questions/440524

سؤال

ليس سؤالًا برمجيًا حقًا، ولكنه ذو صلة بالعديد من المبرمجين ...

لنفترض أنني فتحت جلسة SSH على كمبيوتر آخر.

البعيد: أتش تي أم أل أفاليس $ ليرة سورية
Welcome.msg Index.html readme.txt
البعيد: أتش تي أم أل أفاليس $

هل هناك أي أمر يمكنني كتابته في الصدفة البعيدة الخاصة بي والتي ستنقل على الفور أحد الملفات الموجودة في الدليل الحالي (على سبيل المثال.Welcome.msg) إلى جهاز الكمبيوتر المحلي الخاص بي، أي.

جهاز التحكم عن بعد: html avalys$ stransfer Welcome.msg
جلب /home/avalys/html/welcome.msg إلى Welcome.msg
/home/avalys/html/welcome.msg 100% 23 كيلو بايت 23.3 كيلو بايت/ثانية 00:00
البعيد: أتش تي أم أل أفاليس $

الطريقة الوحيدة التي أعرفها للقيام بذلك هي فتح جلسة SFTP متوازية وقرص مضغوط إلى الدليل الحالي الخاص بي في جلسة SSH، وهو بيتا حقيقي عند إدارة الخادم عن بعد.

يحرر:أنا على دراية بإمكانية استخدام اتصال sftp/scp العكسي، ولكن ذلك يتطلب المزيد من الكتابة.سيكون من الرائع أن أتمكن من كتابة اسم بعض الأوامر فقط (على سبيل المثال:"stransfer")، والملف (الملفات) التي أريد نقلها، واجعلها تعمل فقط.

هل كانت مفيدة؟

المحلول

هل يمكن اقامة مثل هذا الاتصال نقل مقلوب ث / ssh -Rport:127.0.0.1:22 user@host for scp back.

وUse scp user@host:port للوصول إليه.

نصائح أخرى

في البحث وجدت هذا البرنامج الذي يعمل كبديل الإفلات في للعميل المفتوح، zssh.

sudo apt-get install zssh
zssh user@remote
sudo apt-get install zssh
sz file.name
<ctrl>+<space>
rz

وتعمل مثل السحر.

هذا هو الحل المفضل لدي لهذه المشكلة [كما هو موضح في ملف سؤال مكرر انا سألت].قم بإعداد نفق ssh عكسي عند إنشاء جلسة ssh.أصبح هذا سهلاً من خلال وظيفتين bash:يجب تعريف Grabfrom() على المضيف المحلي، بينما يجب تعريف Grab() على المضيف البعيد.يمكنك إضافة أي متغيرات ssh أخرى تستخدمها (على سبيل المثال.-X أو -Y) كما تراه مناسبًا.

function grabfrom() { ssh -R 2202:127.0.0.1:22 ${@}; };
function grab() { scp -P 2202 $@ localuser@127.0.0.1:~; };

الاستخدام:

localhost% grabfrom remoteuser@remotehost
password: <remote password goes here>
remotehost% grab somefile1 somefile2 *.txt
password: <local password goes here>

الايجابيات:

  • إنه يعمل بدون برامج خاصة على أي من المضيفين خارج OpenSSH
  • إنه يعمل عندما يكون المضيف المحلي خلف جهاز توجيه NAT
  • يمكن تنفيذه كزوج من وظيفتين bash من سطر واحد

السلبيات:

  • ويستخدم رقم منفذ ثابت لذلك:
    • لن تعمل مع اتصالات متعددة للمضيف البعيد
    • قد يتعارض مع عملية تستخدم هذا المنفذ على المضيف البعيد
  • يتطلب أن يقبل المضيف المحلي اتصالات SSH
  • يتطلب أمرًا خاصًا عند بدء الجلسة
  • لا يتعامل ضمنيًا مع المصادقة على المضيف المحلي
  • لا يسمح لأحد بتحديد دليل الوجهة على المضيف المحلي
  • إذا قمت بالانتقال من مضيفين محليين متعددين إلى نفس المضيف البعيد، فلن يرغب ssh في تغيير المفاتيح

العمل المستقبلي:هذا لا يزال kludgy جدا.من الواضح أنه سيكون من الممكن التعامل مع مشكلة المصادقة عن طريق إعداد مفاتيح ssh بشكل مناسب، ومن الأسهل السماح بمواصفات الدليل البعيد عن طريق إضافة معلمة إلى Grab()

والأصعب هو معالجة السلبيات الأخرى.سيكون من الجيد اختيار منفذ ديناميكي ولكن بقدر ما أستطيع أن أقول لا توجد طريقة أنيقة لتمرير هذا المنفذ إلى Shell الموجود على المضيف البعيد؛بأفضل ما أستطيع أن أقول، OpenSSH لا يسمح لك بتعيين متغيرات البيئة التعسفية على المضيف البعيد ولا يستطيع bash أخذ متغيرات البيئة من وسيطة سطر الأوامر.حتى لو كان بإمكانك اختيار منفذ ديناميكي، فلا توجد طريقة لضمان عدم استخدامه على المضيف البعيد دون الاتصال أولاً.

ويمكنك تحميل اتصال سه مع سشفس. وبهذه الطريقة يمكنك نقل الملفات ضمن نفس السياق سه، في حين تستخدم أيا كان العميل سه التي تفضلها. يمكنك حتى إعداده لautomount إذا أردت.

إذا كنت في ترميم الأشياء (لا ينبغي أن مصححة IMHO)، وإلقاء نظرة على الموقع سه-xfer

هل يمكن كتابة السيناريو باش اسمه STRANSFER من شأنها أن تأخذ حجة اسم الملف، ثم انها تقحم اسم الملف في الأمر اللجنة الدائمة، على افتراض الخادم والمسار إلى الملفات الموجودة على الخادم لا تتغير.

وأو إذا كان الملف هو نفسه دائما هل يمكن إنشاء اسم مستعار في ملف ~ / .bashrc الخاص بك.

والاسم المستعار getwelcome = 'اللجنة الدائمة avalys @ remotehost: /home/avalys/html/welcome.msg'

وكان لي نفس الفكر الذي كتب بول Tomblin في تعليق على السؤال. جلسات محطة القديمة المستخدمة لاستخدام X-، Y-، و z-المودم البروتوكولات والأدوات (sz وrz للمتغيرات ض مودم) لتحقيق شيء من هذا القبيل. لست متأكدا ما إذا كانت هذه ستعمل على جلسة سه، ولكن قد يكون يستحق المحاولة.

فينك تزود حزمة lrzsz مع هذه الأداة على نظام التشغيل Mac OS X.

وجعل هذا الويكي مجتمع لأنني كنت أشعر بالضيق من أجل الحصول على مندوب بعد حصلت بول هناك أولا ...

وفي المدرسة اذا انا نقل ملف من نظام لينكس واحد إلى آخر، وعادة ما عن بعد باستخدام غطاء المني ثم استخدام اللجنة الدائمة لنقل الملف من النظام البعيد إلى جهاز الكمبيوتر الخاص بي. لست متأكدا إذا كان هذا هو ما كنت أبحث عنه أو إذا كان ذلك ينطبق حتى في قضيتك ولكن هذا عادة ما يكون في طريقي للالتفاف حول الحاجة إلى فتح نافذة طرفية أخرى.

وفقط لتوضيح إذا كان لديك لم تكن مألوفة مع اللجنة الدائمة كنت لا تزال بحاجة الى تحديد موقع الذي تريد وضع الملف على جهاز الكمبيوتر الخاص بك ولكن بالنسبة لي على أي حال هذا هو عموما أسهل شيء أن نتذكر من موقع الملف على الكمبيوتر البعيد. هنا هو وجود صلة التي قد تكون مفيدة: http://www.computerhope.com/unix/scp . HTM

https://superuser.com/questions/259481/reverse-scp-over-ssh -اتصال

sftp server
get file.txt

وعلى ما يبدو، يمكنك أيضا التنقل في جميع أنحاء ن الاشياء في وحدة التحكم بالنشر، وget يأخذ أسم دليل كامل. نسخ إلى الدليل الذي قمت بتشغيل sftp.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top