প্রোটোকল সংস্করণ মেলে না - আপনার শেলটি কি পরিষ্কার?


55

এখানে প্রদত্ত আরএসসিএনসি ব্যাকআপগুলি করার নির্দেশাবলী অনুসরণ করার সময়: http://troy.jdmz.net/rsync/index.html

আমি ত্রুটি পেয়েছি "প্রোটোকল সংস্করণ মেলেনি - আপনার শেলটি কি পরিষ্কার?"

আমি কোথাও পড়েছি যে এর সাথে মোকাবিলা করার জন্য আমাকে প্রম্পটটি (PS1 = "") এবং মোটিড (.hushlogin) প্রদর্শনগুলি নিঃশব্দ করা দরকার। আমি এটি করেছি, প্রম্পট এবং লগইন ব্যানার (এমওটিডি) আর উপস্থিত হয় না, তবে আমি চালানোর সময় ত্রুটিটি এখনও উপস্থিত হয়:

rsync -avvvz -e "ssh -i /home/thisuser/cron/thishost-rsync-key" remoteuser@remotehost:/remote/dir /this/dir/

উভয় ssh ক্লায়েন্ট এবং sshd সার্ভার প্রোটোকলের 2 সংস্করণ ব্যবহার করছে।

কি সমস্যা হতে পারে? ধন্যবাদ।

[সম্পাদনা] আমি http://www.eng.cam.ac.uk/help/jpmg/ssh/authorised_keys_howto.html খুঁজে পেয়েছি যা নির্দেশ দেয় যে কখনও কখনও "-2 পতাকা ssh বা স্লাগিন ব্যবহার করে v2 জোর করা প্রয়োজন

 ssh -2 -i ~/.ssh/my_private_key remotemachine"

সমস্যাটির সমাধান হয়েছে এটি পরিষ্কার নয় কারণ আমি মনে করি ত্রুটি পরিবর্তিত হওয়ার পরে আমি এই পরিবর্তনটি রেখেছি তবে ত্রুটিটি অন্য কোনও ক্ষেত্রে বিকশিত হয়েছে fact যখন আমি আরও শিখব তখন এটিকে আপডেট করব। এবং আমি অবশ্যই এটি ইম্যাক্স শেলের মধ্যে চালানোর পরামর্শটি চেষ্টা করব - ধন্যবাদ।


1
আপনার লগইন স্ক্রিপ্টগুলি কি এমন কিছু আউটপুট দেয় যা তাৎক্ষণিকভাবে দৃশ্যমান হয় না, উদাহরণস্বরূপ উইন্ডো শিরোনাম পরিবর্তন আদেশ? এটি যাচাই করার একটি উপায় হ'ল ইমাকগুলি চালানো, টাইপ করুন ESC x shellএবং করুন export TERM=xterm; ssh remotehost ls। যদি কোনও নিয়ন্ত্রণের অক্ষর বা অন্যান্য উত্সাহজনক আউটপুট উপস্থিত হয়, তবে এটিই আপনাকে খুঁজে বার করতে হবে।
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

1
আমি একই সমস্যা ছিল। আমার ক্ষেত্রে এসএসএইচ সার্ভারটি ক্রুট ব্যবহারকারীদের জন্য কনফিগার করা হয়েছিল এবং কেবল এসএফটিপি অ্যাক্সেসের অনুমতি দেওয়ার জন্য এটি দূরবর্তী শেল থেকে আরএসসিএনসি কমান্ড চালানো সম্ভব ছিল না। আপনার যদি / etc / ssh / sshd_config এ ফোর্সকম্যান্ড কনফিগারেশন বিকল্পের জন্য সার্ভারটিতে অ্যাক্সেস পান। যদি এটি এমন কিছু সেট করে থাকে যা সমস্যা।
ডিভাইস

রেকর্ডের জন্য, আমি এমন একটি পরিস্থিতিতে পৌঁছেছি যেখানে আমি সবেমাত্র একটি প্রোটোকল মিল রেখেছি। RSSync - রূপান্তর আউটপুট উভয় হোস্টের জন্য অভিন্ন, ইন্টারেক্টিভ এবং অ-ইন্টারেক্টিভ ssh সম্পূর্ণ নীরব, অনুমোদিত_কিগুলিতে অভিনব কোনও কিছুই নেই ... ঠিক কাজ করে না। আমি এই মন্তব্যটি অন্যদের জন্য রবিবিটকে শুকিয়ে যাচ্ছি for নিজেকে অনুগ্রহ করুন এবং --rsync- পাথ ছাড়াই চেষ্টা করুন। আপনি সম্ভবত দেখতে পাবেন যে এই সমস্যার সাথে আপনার সমস্যার কোনও যোগসূত্র নেই।
শেলডনহ

@ শেল্ডনঃ স্থানীয় এবং দূরবর্তী মেশিনের পথ কি আপনার ক্ষেত্রে পৃথক হয়েছে? আমার ক্ষেত্রে তারা যাই হোক না কেন একই রকম এবং এটি দেওয়া বা না দেওয়া ( --rsync-path) আমার পক্ষে কোনও জিনিস পরিবর্তন করে না।
0xC0000022L

1
@ 0xC0000022L দুঃখিত, আমি মনে করতে পারি না।
শেলডনহ

উত্তর:


62

আপনার লগইন স্ক্রিপ্টগুলির একটি (.bashrc / .cshrc / ইত্যাদি) সম্ভবত টার্মিনালে ডেটা আউটপুট দিচ্ছে (যখন এটি হওয়া উচিত নয়)। এটি সংযুক্ত হওয়ার সময় এবং অনুলিপি তৈরি করতে প্রস্তুত হওয়ার সাথে সাথে এসএসএসকে ত্রুটি সৃষ্টি করে যা এটি প্রত্যাশা করে না এমন অতিরিক্ত ডেটা গ্রহণ করা শুরু করে। স্টার্টআপ স্ক্রিপ্টগুলিতে উত্পন্ন আউটপুট সরান।

আপনার টার্মিনালটি ইন্টারেক্টিভ এবং বাশার্কে নিম্নলিখিত কোডটি ব্যবহার করে কেবল আউটপুট পাঠ্য কিনা তা পরীক্ষা করতে পারেন। অন্যান্য শেলগুলির জন্য সমতুল্য কিছু উপস্থিত রয়েছে:

if shopt -q login_shell; then
    [any code that outputs text here]
fi

বা বিকল্পভাবে, এর মতো, যেহেতু শেলটি ইন্টারেক্টিভ হয় তখন বিশেষ পরামিতি -থাকে i:

if echo "$-" | grep i > /dev/null; then
    [any code that outputs text here]
fi

আরও তথ্যের জন্য দেখুন: লিনাক্স থেকে উইন্ডোজ এসএসএস 2003 এর মাধ্যমে এসএসএসের মাধ্যমে আরএসসিএনসি 2003 প্রোটোকল মিল নেই

এটি নির্ণয়ের জন্য, হোস্টের সাথে সংযোগ নেওয়ার সময় নিম্নলিখিতটি আউটপুট পাবেন তা নিশ্চিত করুন:

USER@HOSTNAME's password: 
Last login: Mon Nov  7 22:54:30 2011 from YOURIP
[USER@HOSTNAME ~]$ 

আপনি যদি কোনও নতুন লাইন বা অন্যান্য ডেটা পান তবে আপনি জানেন যে অতিরিক্ত আউটপুট প্রেরণ করা হচ্ছে। আপনি আপনার .bashrc / .cshrc /। প্রোফাইল / ইত্যাদি নামকরণ করতে পারেন। ফাইল অন্য কোনও কিছু যাতে তারা অতিরিক্ত আউটপুট আউটপুট না। অবশ্যই এখনও সিস্টেম ফাইল রয়েছে যা এর কারণ হতে পারে। সেক্ষেত্রে আপনার সিস্টেমেডমিন দিয়ে পরীক্ষা করুন যে সিস্টেম ফাইলগুলি ডেটা আউটপুট দেয় না।


5
আন echoইন দ্য ~/.bashrc, থেক্স আপনি আমার দিনটি তৈরি করেছেন
user9869932

19

আপনার শেলটি পরিষ্কার কিনা তা পরীক্ষা করার একটি সহজ উপায় রয়েছে, এসএসএস সংযোগের জন্য: ইন্টারেক্টিভ শেলটি শুরু করার পরিবর্তে ssh সংযোগ থেকে একটি কমান্ড চালান। falseকমান্ড অবিলম্বে কোনো আউটপুট উৎপাদন ছাড়া বন্ধ করে দেব, তাই এটি একটি ভালো পরীক্ষা:

bash$ ssh remotehost false
Enter passphrase for key '/home/user/.ssh/my_private_key': 
bash$

যদি সেই কমান্ড লাইনটি কোনও আউটপুট উত্পন্ন করে, আপনার প্রারম্ভিক স্ক্রিপ্টগুলির একটি দোষযুক্ত:

bash$ ssh remotehost false
Enter passphrase for key '/home/user/.ssh/my_private_key': 
Welcome to RemoteHost!

This system is company property and is provided for authorized use only, 
as set forth in applicable written policies. Unauthorized use is prohibited 
and may be subject to discipline, civil suit and criminal prosecution.

Welcome back - You last logged in 16 days ago...
bash$

আপনি এই ত্রুটিটি পেয়ে যাচ্ছেন কিনা তা যাচাই করার জন্য আরেকটি বিষয় হ'ল আরএসসিএন ইনস্টল করা আছে এবং এসএসএসের দ্বারা লোকেশনযোগ্য কিনা:

bash$ ssh remotehost "rsync --version"
Enter passphrase for key '/home/user/.ssh/my_private_key': 
rsync  version 3.0.9  protocol version 30
Copyright (C) 1996-2011 by Andrew Tridgell, Wayne Davison, and others.
Web site: http://rsync.samba.org/
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.
bash$

আরএসসিএনসি যদি পথে না থাকে তবে আপনি এর পরিবর্তে এমন কিছু দেখতে পাবেন:

bash$ ssh remotehost "rsync --version"
Enter passphrase for key '/home/user/.ssh/my_private_key': 
bash: rsync: command not found
bash$

আপনি আরএসসিএনসি ইনস্টল করে এটি ঠিক করতে পারেন, বা এটি ইনস্টল করা থাকলেও কোনও অস্বাভাবিক স্থানে, অবস্থানটি আরএসইএনসি কমান্ড লাইনে পাস করে:

rsync -avvvz -e "ssh -i /home/thisuser/cron/thishost-rsync-key" \
    --rsync-path="/usr/local/bin/rsync" \
    remoteuser@remotehost:/remote/dir /this/dir/

7

এটি সাধারণত আপনার শেলের লগইন স্টাফকে একটি অ-ইন্টারেক্টিভ শেলের আউটপুট স্টাফের কারণে ঘটে। এটি করে যদি আপনি এটি পরীক্ষা করতে পারেন:

ssh username@host "/bin/true" > testfile
ls -l testfile

টেস্টফিল যদি 0 বাইট না হয় তবে সমস্যাটি হ'ল আপনার শেলটি কিছু আউটপুট দিচ্ছে। পরীক্ষা করে দেখুন /etc/profile, .profile, .bashrc, .cshrc, ইত্যাদি যদি তা না হয়, আপনি যদি আপনার টার্মিনাল ইন্টারেক্টিভ এবং শুধুমাত্র আউটপুট টেক্সট bashrc মধ্যে নিম্নলিখিত কোড ব্যবহার করা চেক করতে এটি পরিবর্তন করতে পারেন। অন্যান্য শেলগুলির জন্য সমতুল্য কিছু উপস্থিত রয়েছে:

if shopt -q login_shell; then
    [any code that outputs text here]
fi

বা বিকল্পভাবে, এর মতো, যেহেতু শেলটি ইন্টারেক্টিভ হয় তখন বিশেষ পরামিতি -থাকে i:

if echo "$-" | grep i > /dev/null; then
    [any code that outputs text here]
fi

যাইহোক, যদি পরীক্ষার ফাইলটি আসলে 0 বাইট হয়, তবে আপনার শেলটি আচরণ করছে তবে এটি সম্ভবত আপনার কাছে একটি খুব পুরানো সংস্করণ rync রয়েছে have পুরানো rysnc সার্ভার সংস্করণটি এটি স্বীকৃতি দেয় না এমন উচ্চতর সংস্করণটির বিজ্ঞাপন না দেওয়ার জন্য আপনি ক্লায়েন্ট এন্ডকে (এটি নতুন প্রান্তটি ধরে নিলে) বলে দিতে পারেন। আপনি --protocol=বিকল্পটি ব্যবহার করে এটি করতে পারেন । আমার ক্ষেত্রে, --protocol=30কৌশলটি ব্যবহার করে।

আপনার যদি এখনও সমস্যা হয় তবে ব্যবহারকারী আরএসএনসিএন এর সাথে সংযোগ স্থাপন করায় এসএসএস চেষ্টা করুন এবং শেলটি আরএসএনসি rsync --versionখুঁজে পাবে কিনা তা দেখার জন্য দৌড়ে চেষ্টা করুন । যদি আপনি এমন কিছু পেয়ে থাকেন যা বলে যে কমান্ডটি পাওয়া যায় নি তবে আপনি যে মেশিনে সংযোগ করছেন সেটি আরএসআইএনসি ইনস্টল করা নাও হতে পারে বা এটি পথে নাও থাকতে পারে। রাইকিঙ্কের কাছে দূরবর্তী প্রান্তের পাথ নির্দিষ্ট করার জন্য বিকল্প রয়েছে, ম্যান পৃষ্ঠা (গুলি) পড়ুন।


ইঙ্গিতটির জন্য +1 --protocolযা আমার 2.5.5 সার্ভার (প্রোটোকল সংস্করণ 26) এবং একটি 3.1.0 ক্লায়েন্ট (প্রোটোকল সংস্করণ 31) দিয়ে সমাধান করেছে
ম্যাটবিয়ানকো

4

অন্যান্য জবাব থেকে এটি একটি বিশেষ কেস, তবে ততক্ষণে খুব আলাদা নয়।

Ssh এর মাধ্যমে একটি rsync চালিত করতে, দূরবর্তী rsync কমান্ড কার্যকর করতে আপনার ssh- এ শেল অ্যাক্সেস প্রয়োজন need যদি আপনার ssh অ্যাকাউন্টটি কেবলমাত্র scp / sftp এর অনুমতি দেয় তবে আপনি রিসাইক রিসাইক শুরু করতে সক্ষম হবেন না এবং এই ত্রুটিটি দিতে ব্যর্থ হন।

এটি উপরের মতো একই কমান্ড দিয়ে পরীক্ষা করা যেতে পারে

ssh remotehost false

এটির ব্যর্থ হওয়া উচিত এবং এটির সাফল্য হওয়া উচিত

sftp remotehost

এটি প্রমাণ করে যে আপনার কাছে কেবল sftp অ্যাক্সেস রয়েছে।

যদি আপনি চান এবং এটি করার অনুমতি পেয়ে থাকেন তবে আপনি সম্পাদনা সম্পাদনা করে /etc/ssh/sshd_configএবং অনুসন্ধানের জন্য match এবং forcecommandএন্ট্রিগুলি ব্যবহার করে কেবল সেই ব্যবহারকারীর জন্য sftp অ্যাক্সেস অক্ষম করতে পারবেন ।

আপনি এই পোস্টটি চেক করতে পারেন


4

আমি protocol version mismatch -- is your shell clean?কেবল তাই পেয়েছি কারণ আমি অন্য প্রান্তে এখনও আরএসসিএনটি ইনস্টল করেছিলাম না । sudo yum install rsyncসমস্যার সমাধান।


একটি ধারকটির সাথে 30 মিনিট জগাখিচুড়ি ব্যয় করেছেন এবং উত্তরদাতা অবাক হয়ে ভাবছেন কেন আর এসসিএনসি কাজ করছে না ... এটি ইনস্টল না হয়ে কাজ করা শক্ত! ধন্যবাদ;)
রায়ান ফিশার

2

সরাসরি কমান্ড কার্যকর করার সময় প্রম্পটটি মোটেও প্রদর্শিত হবে না এবং ইন্টারেক্টিভভাবে এমনও হবে না। একটি সরল গুগল প্রথম ফলাফল প্রকাশ করে: http://marc.info/?l=rsync&m=100263876212594&w=2 এবং যেহেতু শেলটি সম্ভাব্যভাবে ডাকা যেতে পারে, তাই এটি অবশ্যই ইন্টারঅ্যাক্টিভ মোডে কিছু প্রদর্শন করতে হবে না - যেমন টাইপ করার সময় " একটি বিদ্যমান প্রম্পটে বাশ ", নতুন প্রম্পট ছাড়া আর কিছুই প্রদর্শিত হবে না।


সম্ভবত আমি এটিকে যথেষ্ট পরিস্কারভাবে ব্যাখ্যা করতে পারি নি তবে ইতিমধ্যে আমি এই "প্রম্পট (পিএস 1 =" ") এবং মোটিড (.hushlogin)" সম্পন্ন করেছি। লগইন প্রকৃতপক্ষে কোনও প্রম্পট দেখায় না। এটি সত্ত্বেও প্রোটোকল অমিল ত্রুটি এখনও উপস্থিত হয়। ধন্যবাদ যদিও - অনেক পরামর্শ প্রশংসা।
rfreytag

আপনি মূলত এটি ইতিমধ্যে উল্লেখ করেছেন, তবে .bashrc (বা অন্য প্রোফাইল স্ক্রিপ্ট) এর মধ্যে স্ক্রিনের যে কোনও কিছু প্রতিধ্বনি করে এমন কিছু থাকলে আমার এই জাতীয় সমস্যা হয়েছিল। এমনকি শেলটিতে কিছু প্রোগ্রাম চালানোর সময় আমি এই ধরণের সমস্যা পেয়েছি যা কিছু নির্দিষ্ট উপায়ে জিনিসগুলিকে পরিবর্তন করে (উদাহরণস্বরূপ, আমি chsh দিয়ে আমার শেলটি পরিবর্তন করতে সক্ষম হইনি, সুতরাং আমার আমার .cshrc রান ব্যাশটি আমার পরিবর্তন করতে পেরেছিল) শেল, এবং ssh আর কাজ করবে না)।
lsd

ওয়েল এটি অবশ্যই আকর্ষণীয়। আমি অবাক হয়েছি যে আমি কীভাবে এটি নির্ণয় করতে পারি, যেহেতু আরএসসিএন কমান্ড কার্যকর করার ফলে ইন্টারেক্টিভভাবে স্ক্রিনে কোনও প্রতিধ্বনি নেই এবং লগইন সম্পূর্ণ নীরব? হুমম ... আমি ভাবছি শেলটির সাথে আপনার প্রস্তাব অনুসারে কিছু ভুল আছে কিনা? ধন্যবাদ।
rfreytag

1

এটি রিমোট হোস্টে লগইন বার্তার কারণে ঘটতে পারে যেমন "আপনার পাসওয়ার্ডটি 6 দিনের মধ্যে শেষ হতে চলেছে" যা আরএসওয়াইএনসি আশা করে না

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.