رسينك التعرف على الملفات بين اثنين من الخوادم عن بعد على أخطاء تفيد رسينك الأمر لم يتم العثور على الملقم البعيد

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

  •  06-09-2019
  •  | 
  •  

سؤال

أنا أحاول أن رسينك الملفات بين اثنين من الخوادم

rsync -avlzp /source user@server:/destination

ولكن بدلا من ذلك حصلت على أخطاء تفيد

bash: rsync: command not found
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(635) [sender=3.0.2]

ولكن رسينك هو مثبتة على كل من الملقمات.ما الخطأ الذي فعلته ؟ لقد حاولت أيضا

rsync -av -e "ssh -l ssh-user" /source server:/destination

مع نفس النتيجة.

أنا أساسا محاولة استخدام رسينك ذلك فقط نسخ الخلافات إذا كانت موجودة...

شكرا

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

المحلول

قد يكون RSYNC في المسار على الجهاز البعيد عند تشغيل قذيفة تفاعلية، ولكن ليس عند تشغيل RSYNC بواسطة SSH (مع قذيفة غير تفاعلية). .bashrc عادة ما يتم تشغيلها فقط للقذائف التفاعلية، على سبيل المثال، إذا تم تعريف مسارك هناك، فلن يتم تحليله عند التشغيل rsync --server في النهاية البعيدة. حاول / الخ / الملف الشخصي. يرى باش (1) لمزيد من التفاصيل.

يمكنك استخدام --rsync-path لتحديد المسار إلى RSYNC Binary على الجهاز البعيد.

نصائح أخرى

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

والجواب الدول المذكورة أعلاه ، رسينك قد تكون في مسار على الجهاز البعيد عند تشغيل تفاعلية قذيفة ، ولكن ليس عند تشغيل رسينك عن طريق ssh.كما تلاحظ في Siddesh http://siddesh-bg.blogspot.com/2009/02/rsync-command-not-found-error-even.html هذا يمكن حلها عن طريق صراحة تحديد المسار إلى البعيد رسينك من شل:

rsync -av --rsync-path=/usr/local/bin/rsync -e "ssh -l ssh-user" /source server:/destination

ولكن كمسؤول أردت أن حل المشكلة ليس فقط العمل حوله.تغذية rss نشر مفيدة لاستكشاف الأخطاء وإصلاحها النهج في https://groups.google.com/group/comp.unix.solaris/browse_thread/thread/0a06a4d382d752d8?pli=1

لقد أقترح عليك معرفة ما شل يتم تشغيله على الجهاز البعيد ، ثم ما الطريق وقد أنشئت هناك:

ssh user@host 'echo $SHELL' 
ssh user@host 'echo $PATH' 

توم فاينر لطيفة وظيفة في لماذا SSH الأمر بعد الحصول على عدد أقل من متغيرات البيئة ثم عند تشغيله يدويا ؟ أن يناقش البيئة إنشاء SSH تنفيذ الأوامر قذيفة.

تغذية rss أشار أيضا إلى أن "الرجل sshd_config" يوفر بعض المعلومات حول كيفية جلسة ssh يحصل على البيئة.على sshd_config الإعداد "PermitUserEnvironment" يمكن تعيين للسماح للمستخدم ~/.ssh/البيئة على جانب الملقم والبيئة الخيارات في AuthorizedKeysFile الملف إلى معالجتها بواسطة sshd.الافتراضي هو لا.

حتى مع التقصير sshd_config إعدادات المسار سيكون بناها الافتراضي الخاص بك قذيفة.إذا كانت الأوامر ssh طلبات جلسة تفاعلية (ssh user@host) ثم على الملقم البعيد shell الافتراضي سوف تفعل تفاعلية تسجيل الدخول ، الأمر الذي سيؤدي على الأرجح في المسار الذي تتوقع.ولكن إذا كنت بدء جلسة ssh عن رسينك (رسينك -av --رسينك-مسار=/البيرة/المحلية/بن/رسينك -e "ssh-ل ssh-المستخدم" /الخادم المصدر:/الوجهة) ثم الملقم البعيد يعطيك SSH تنفيذ الأمر قذيفة غير التفاعلية قذيفة.في حالتي, جهاز التحكم عن بعد غير التفاعلية shell (bash) هو عدم تنفيذ /etc/profile, لأنه فقط لا التفاعلي قذائف أو غير تفاعلية قذائف مع خيار تسجيل الدخول.أنا قد يجبر مثل هذا:

ssh user@host 'echo $PATH;source /etc/profile;echo $PATH' 

أنا أيضا درست دانيال باريت & ريتشارد سيلفرمان "SSH Secure Shell" (أورايلي 2001) و تحديد المسار في /etc/ssh/sshrc التي تمنيت أن تجعل رسينك المتاحة SSH تنفيذ الأمر قذائف, ولكن, /etc/ssh/sshrc يتم تنفيذها من قبل المستخدمين قذيفة أو قيادة الاحتجاج به, و على ما يبدو انها بيئة لا يتم تمرير إلى أن قذيفة أو الأوامر.

عند هذه النقطة أنا لن يكون راضيا مع رسينك خيار سطر الأوامر ، أي:

rsync -av --rsync-path=/usr/local/bin/rsync -e "ssh -l ssh-user" /source server:/destination

لأن أنا قلقة من أن إذا قمت بتغيير sshd_config الإعداد "PermitUserEnvironment" ثم أنا سوف ربما تفشل المراجعة الأمنية على الخوادم.لا يجوز إعادة النظر في هذا بعد لدي المزيد من الخبرة مع منظمتنا التدقيقات الأمنية.

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