এসএসপিপি (এসএস শেল ব্যতীত) কী আরএসসিএনসি ব্যবহার করা সম্ভব?


60

Ssh ওভার রাইঙ্ক, প্রতিবার দুর্দান্ত কাজ করে।

তবে, কোনও হোস্টের কাছে আরএসআইএনসি করার চেষ্টা করা হচ্ছে যা কেবল এসএফটিপি লগইনগুলিকে অনুমতি দেয় তবে এসএসএস লগইন নয়, নিম্নলিখিত ত্রুটি সরবরাহ করে:

rsync -av / উত্স ssh ব্যবহারকারী @ রিমোটহস্ট: / টার্গেট /

প্রোটোকল সংস্করণ মেলে না - আপনার শেলটি কি পরিষ্কার? (ব্যাখ্যার জন্য আরএসসিএন ম্যান পৃষ্ঠাটি দেখুন) আরএসসিএন ত্রুটি: কমপ্যাক্টে প্রোটোকল বেমানান (কোড 2) (171) [প্রেরক = 3.0.6]

আরএসসিএন ম্যান পৃষ্ঠা থেকে প্রাসঙ্গিক বিভাগটি এখানে:

এই বার্তাটি সাধারণত আপনার স্টার্টআপ স্ক্রিপ্ট বা রিমোট শেল সুবিধার কারণে হয়ে থাকে যে স্ট্রিমটিতে অযাচিত আবর্জনা তৈরি করা হয় যা আরএসসিএনসি তার পরিবহণের জন্য ব্যবহার করছে। এই সমস্যাটি সনাক্ত করার উপায়টি হ'ল আপনার দূরবর্তী শেলটি এভাবে চালানো:

          ssh remotehost /bin/true > out.dat

তারপরে out.dat এ দেখুন। যদি সবকিছু সঠিকভাবে কাজ করে থাকে তবে আউট.ডেটটি শূন্য দৈর্ঘ্যের ফাইল হওয়া উচিত। আপনি যদি আরএসইএনসি থেকে উপরের ত্রুটিটি পেয়ে থাকেন তবে সম্ভবত আপনি খুঁজে পাবেন out ডেটে কিছু পাঠ্য বা ডেটা রয়েছে। বিষয়বস্তু দেখুন এবং এটি উত্পাদন করছে কি তা চেষ্টা করার চেষ্টা করুন। সর্বাধিক কম কারণ হ'ল ভুলভাবে কনফিগার করা শেল স্টার্টআপ স্ক্রিপ্টগুলি (যেমন .cshrc বা। প্রোফাইলে) যা ইন্টারঅ্যাক্টিভ লগইনগুলির জন্য আউটপুট বিবৃতি ধারণ করে।

আমার সিস্টেমে এটি চেষ্টা করে নিম্নলিখিতটি তৈরি করে।

ssh-dummy-sheel: কমান্ড অনুমোদিত নয়।

যেমনটি আমি ভেবেছিলাম, হোস্টটি ssh লগইনগুলিকে অনুমতি দিচ্ছে না।

নিম্নলিখিত লিঙ্কটি দেখায় যে sshfs এর সাথে ফিউজ ব্যবহার করে এই কাজটি করা সম্ভব - তবে এটি অত্যন্ত ধীর এবং উত্পাদন ব্যবহারের জন্য উপযুক্ত নয়।

আরএসএনসিএফপিটি কাজ করার কোনও সুযোগ আছে কি?


3
lftp কৌশলটি করবে। আমি স্থানীয় রিমোটে

আপনি কি জানেন যে সার্ভারে কমান্ডগুলি কীভাবে সীমাবদ্ধ রয়েছে? এটি যদি sshd_config এ ফোর্সকমন্ড সেট করে থাকে, তবে আপনি যে ফাইলটি নির্দেশ করেছেন সেটিকে আপনি সংশোধন করতে পারেন কিনা তা দেখুন। বা যদি এটি অনুমোদিত_কিগুলিতে কমান্ড অনুসারে সেট করা থাকে তবে আপনি হয়ত sshfs এর মাধ্যমে অনুমোদিত_কিগুলি অ্যাক্সেস করতে এবং এটিকে পরিবর্তন করতে পারবেন?
পিটিম্যান

আপনি সাইকাকে চেষ্টা করে দেখতে পারেন : csync /home/csync sftp://csync@krikkit.galaxy.site:2222/home/csyncএই উত্তরটি দেখুন ।
নচটিগল

6
অবশেষে আমি তা lftp, :lftp -e "mirror -eRv /local/dir/ /remote/dir; quit;" sftp://user@server:port
nachtigall

@ ন্যাচটিগল কীভাবে আপনি একাধিক ইনপুট ফাইল / ফাইল এবং ডায়ারের একটি তালিকা দিয়ে এলএফটিপি ব্যবহার করবেন তা জানেন?
বোরট্রান

উত্তর:


39

দুর্ভাগ্যক্রমে সরাসরি না। rsyncএকটি শেলের সাথে একটি পরিষ্কার লিঙ্ক প্রয়োজন যা এটি rsyncএভাবে চালানোর সময় এর দূরবর্তী অনুলিপিটি শুরু করার অনুমতি দেয় ।

হোস্টটিতে দীর্ঘকালীন শ্রবণ প্রক্রিয়া চালানোর কোনও উপায় থাকলে আপনি অন-সুবিধাযুক্ত বন্দরে সংযোগের জন্য ম্যানুয়ালি আরএসএনসি শুরু করার চেষ্টা করতে পারেন, তবে এটি করার বেশিরভাগ কৌশলগুলির জন্যও এসএসএইচ দিয়ে সঠিক শেল অ্যাক্সেসের প্রয়োজন হবে এবং এটি নির্ভর করে হোস্টগুলি ফায়ারওয়াল ব্যবস্থা আপনার পছন্দমতো বন্দরে সংযোগ স্থাপন করতে দেয় (এবং হোস্টটি প্রথম স্থানে rsync ইনস্টল করে থাকে)। সরকারীভাবে ঠিকানাযোগ্য পরিষেবা হিসাবে আরএসসিএন চালানো (অপ্রত্যক্ষভাবে এসএসএইচ বা অনুরূপের মাধ্যমে নয়) যদিও অ-পাবলিক ডেটার জন্য সাধারণত সুপারিশ করা হয় না।

যদি আপনি হোস্টটি পিএইচপি বা অনুরূপ স্ক্রিপ্টিংকে মঞ্জুরি দেয় এবং এটিতে লক না থাকে তাই অতিরিক্ত execস্ক্রিপ্টগুলি ব্যবহারকারী স্ক্রিপ্টগুলি দ্বারা সম্পাদনা করা যায় না , তবে আপনি সেইভাবে শ্রবণ মোডে আরএসএনসি শুরু করার চেষ্টা করতে পারেন। যদি আপনার শেষটি সংযোগযোগ্য হয় (আপনি বহির্বিশ্বে অ্যাক্সেসযোগ্য এসএসএইচ চালিয়ে যাচ্ছেন) আপনি বিপরীতে এটি চেষ্টা করতে পারেন - সার্ভারে একটি স্ক্রিপ্ট রান আরএসএনসি লাগান তবে আগত সংযোগগুলি শোনার পরিবর্তে এটি আপনার স্থানীয় পরিষেবাতে যোগাযোগ করে এবং সেভাবে সিঙ্ক করে। এটি এখনও দেওয়া হয় না এমন হোস্টে প্রকৃতপক্ষে ইনস্টল করা আরএসসিএনটির উপর নির্ভর করে যা আপনি প্রদত্ত নয়, বা আপনি একটি কার্যকরী অনুলিপি আপলোড করতে পারেন তবে সরকারীভাবে ঠিকানাযোগ্য ফ্যাশনে আরএসসিএনএইচ ডিমন চালানো এবং একটি এনক্রিপ্ট না করে এটির সাথে কথা বলার সুরক্ষা জড়িত নেই does চ্যানেল।

উপরে বর্ণিত হিসাবে চারপাশে জগাখিচুড়ি হোস্টের নীতিগুলির বিরুদ্ধে হতে পারে, যদিও এটি কিছুটা কাজ করে না, এবং আপনাকে লাথি মারতে পারে। আপনি যদি এই অ্যাকাউন্টের জন্য একটি পূর্ণ শেল সক্ষম করতে পারেন এবং সেই হোস্টের জন্য আরএসসিএনকি ত্যাগ করে বা সেই হোস্টটি ত্যাগ করে এবং অন্য কোনও জায়গায় চলে যায় তবে তারা তা না করে যদি আপনি আরও জিজ্ঞাসা করছেন better


2
দ্রষ্টব্য যে এটি একটি পূর্ণ শেল হতে হবে না; এটি কেবল সঠিক যুক্তি দিয়ে rsync কমান্ড চালাতে দেয়। scponly এই জন্য দরকারী।
সাইরাস

19

তাত্ত্বিকভাবে, হ্যাঁ আপনি FUSE ব্যবহার করে আপনার স্থানীয় মেশিনে রিমোট ফাইল সিস্টেমটি মাউন্ট করতে পারেন । তারপরে আপনি মাউন্ট করা ডিরেক্টরি এবং স্থানীয় ডিরেক্টরিতে rsync এর স্থানীয় কপি চালাতে পারেন run আমি ব্যক্তিগতভাবে এটি চেষ্টা করি নি, তবে এটি তত্ত্ব অনুসারে কাজ করা উচিত। এটি এসএসএইচ-এর চেয়ে আরএসসিএন সম্পাদন করা অনেক কম দক্ষ হবে কারণ তুলনাটি সম্পাদনের জন্য প্রতিটি ফাইলের কমপক্ষে কিছু অংশ স্থানান্তর করতে হবে।


11
টাইমস্ট্যাম্প + আকারের তুলনা যখন কী প্রেরণ করা দরকার তা ঠিক করার জন্য এটি কাজ করা উচিত। শীঘ্রই এএ চেকসামের প্রয়োজন হলে সম্পূর্ণ দূরবর্তী ফাইলটি পাঠানো আপডেটগুলির পাশাপাশি লাইনটির উপরে পড়তে হবে, সুতরাং আপনার নিজের সিস্টেমে আরএসইএনসি'র বিকল্পগুলি সেট করে আছে তা নিশ্চিত করুন যে এটি প্রতিটি ফাইলের জন্য অল-বা-কিছুই করেনি (--ignore- ব্যবহার না করে) সময় বা - চেকসাম এবং - ফাইল ফাইল নির্দিষ্ট করা যথেষ্ট হতে পারে)। কিছু কিছু বিকল্প যেমন - লিঙ্ক-ডেস্টে সঠিকভাবে (বা মোটেও) কাজ করার সম্ভাবনা খুব বেশি।
ডেভিড স্পিললেট

ডেভিড কিছু বিবরণ যোগ করার জন্য ধন্যবাদ। দক্ষতার ক্ষেত্রে এটি সীমাবদ্ধতার ধরণের ছিল যা আমি ভাবছিলাম, কেবল
সেগুলিও যথেষ্টভাবে প্রকাশিত

এটি হ'ল সীমাবদ্ধতার সাথে একমত, তবে "যথাযথ"
আরএসসিএনসি চালানোর

10

আরএসসিএনসি ব্যবহারের বিকল্প হ'ল পরিবর্তে lftp (যা এসফ্টপিতে সংযোগ করতে পারে) এবং মিরর কমান্ড ব্যবহার করা। উদাহরণস্বরূপ, একটি করতে পারেন

lftp
~> open -u user,password sftp://host.com
~> mirror remotedir outdir
~> quit

1
যদিও এই পোস্টটি প্রশ্নের জবাব দেয় না এটি একটি সহায়ক বিকল্প সরবরাহ করে
দিমিত্রি চুবারভ

5

কিছুটা দেরি হলেও এখানে এসএসএফএস ব্যবহার করে আমি এটি কীভাবে করব

  source /scratch/slimdata/password.sh
  mkdir tmp_mnt
  echo $PASSWORD | sshfs user@host:dir tmp_mnt -o password_stdin
  rsync -rutL --delete tmp_mnt/ to_sync/
  fusermount -u tmp_mnt
  rmdir tmp_mnt

3
@ ডেভিড স্পিলিট যেমন পূর্বের উত্তরের ( সার্ভারফল্ট / প্রশ্নস / ১১৩66১৮/২ ) মন্তব্যে বলেছেন , এটি কাজ করবে তবে আরএসসিএনসি প্রোটোকলের কিছুটা অদক্ষ ব্যবহার use
ইভান অ্যান্ডারসন

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

2

আর। আরএসএনসি অন্যদিকে আরএসএনসি চালিয়ে এবং এর সাথে যোগাযোগ করে কাজ করে, যার অর্থ শেল অ্যাক্সেসের কিছু ফর্ম আবশ্যক।


2

বিকল্পটি হ'ল ডিএসমন হিসাবে আরএসইএনসি শুরু করা এবং এটি একটি এসএসএইচ টানেলের মাধ্যমে সংযুক্ত করা।


এই উত্তরটি সম্পূর্ণরূপে সহায়ক হিসাবে খুব সংক্ষিপ্ত, তবে সার্ভার পক্ষটি যদি শেল অ্যাক্সেসের অনুমতি না দিতে পারে তবে (1) আরএসসিএন সার্ভারটি স্থানীয়ভাবে শোনার অনুমতি দেয় (বাইরে থেকে সুরক্ষার জন্য উপলব্ধ নয়), এবং (2) এসএসএস টানেল, তবে নীতিটি কোনও নিয়মের মাধ্যমে সার্ভারে লগ ইন করতে পারে authorized_keysযা একটি নির্দিষ্ট টানেলের অনুমতি দেয় এবং উদাহরণস্বরূপ চালায় sleep 86400। তারপরে ক্লায়েন্ট পক্ষটি তখন rsyncটানেলের মাধ্যমে পারে ।
স্টাফেন গ্যারিচন

2

সর্বোত্তম একত্রিত করার বিকল্প

এখানে অন্যান্য উত্তরগুলির নীচের সুবিধাগুলি রয়েছে বলে মনে হয়:

  • এসএসএইচ থেকে সম্পূর্ণ উপকারিতা (সুরক্ষিত)
  • RSSync (ব্যান্ডউইথ-দক্ষ প্রোটোকল, ব্যান্ডউইথ সীমাবদ্ধতার মতো সমস্ত rsync বিকল্প) থেকে সম্পূর্ণ উপকারিতা
  • আসলে দক্ষ (এসএসএফএসের বিপরীতে যা দিনগুলিকে বাঁচায় তবে অনুশীলনে এখনও ধীর গতির)
  • স্বেচ্ছাসেবী শেল কমান্ডগুলির সার্ভার-সাইড প্রয়োজন হয় না
  • এসএসএস টানেলের অনুমতি দেওয়ার জন্য সার্ভারের দরকার নেই
  • rsyncডিমন চালাতে সার্ভারের দরকার নেই

আমি এখনও এটি পরীক্ষা করে দেখিনি, তবে আমি ব্যতীত সমস্ত বৈশিষ্ট্যগুলি সফলভাবে ব্যবহার করেছি rrsync

এটা কিভাবে করতে হবে

  • স্থানীয়ভাবে একটি কী তৈরি করুন ssh-keygen(ওপেনএসএসএইচ বৈশিষ্ট্য)
  • সার্ভারের ~/.ssh/authorized_keys(ওপেনএসএইচ বৈশিষ্ট্য) এন্ট্রি সহ কেবলমাত্র সেই নির্দিষ্ট কী দিয়ে লগইনকে অনুমতি দিন
  • এই কীটি একটি নির্দিষ্ট কমান্ডের সাথে যুক্ত করুন, ~/.ssh/authorized_keys(ওপেনএসএসএইচ বৈশিষ্ট্য) কমান্ড হিসাবে ব্যবহার করে স্ক্রিপ্টটি আরএসসিএনসি rrsyncদিয়ে বিতরণ করা হবে, এরকম কিছুcommand="$HOME/bin/rrsync -ro ~/backups/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-

তারপরে আপনি সাধারণত ক্লায়েন্টের কাছ থেকে আরএসসিএন করতে পারেন।

আপনার আরও বিশদ প্রয়োজন হলে

এসএসএইচ অ্যাক্সেসকে rsync এ সীমাবদ্ধ করা হচ্ছে গাই রুটেনবার্গ

উপরের লিঙ্কের বাইরে এক ধাপ

পৃষ্ঠার শেষে কমান্ডটি আরও ছোট করা যেতে পারে। ইন ~/.ssh/configএই মত একটি স্তবক তৈরি করুন:

Host remote # can be host or ip or custom-label User user # login on remote host HostName optional-dns-resolvable-host-or-ip # if label used above IdentityFile ~/.ssh/id_remote_backup

তারপরে ক্লায়েন্টের কাছ থেকে আপনার rsync কমান্ড

rsync -e "ssh -i $HOME/.ssh/id_remote_backup" -av user@remote: etc2/

হয়ে

rsync -av user@remote: etc2/

1
দুর্ভাগ্যক্রমে এসএফটিপি সার্ভারের সাথে আরএসসিএনসি ব্যবহারের কোনও সম্পর্ক নেই যদিও, rsyncএটি চালনার অনুমতি দেওয়ার জন্য একটি ওপেনএসএইচ সার্ভারটি কনফিগার করার বিষয়ে, এসএফটিপি দিকটি পাশ কাটিয়ে চলেছে। যদি আপনি অন্য কারও এসএফটিপি সার্ভারের সাথে উপস্থাপন করেন যে আপনার কোনও নিয়ন্ত্রণ নেই তবে এই উত্তরটি সমস্যার সমাধান করতে পারে না।
মালভাইনয়াস

তুমি ঠিক বলছো. আমি সম্ভবত এটি অন্য একটি প্রশ্নের উত্তর দেওয়ার জন্য লিখেছিলাম এবং ভুল করে এখানে পোস্ট করেছি। আমি আমার উত্তর এখানে অপসারণ বিবেচনা করছি।
স্টাফেন গৌরিচন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.