scp কাজ করে না তবে ssh করে


56

আমি যদি সার্ভারে scp- এর মাধ্যমে কিছু পাঠাতে চাই:

$ scp file server:
                   _____  _____  _____
$

তারপরে তিনটি লাইন মুদ্রিত হয় এবং ফাইলটি অনুলিপি করা হয় না। তবে আমি সমস্যা ছাড়াই ssh এর মাধ্যমে সার্ভারের সাথে সংযোগ করতে পারি:

$ ssh server

কীভাবে scp এর কাজ করবেন?


অপারেটিং সিস্টেম,
এসএসএস

এবং এই তিনটি লাইন কী ছাপা হয়?
jjlin

সাধারণ ক্ষেত্রে, যখন আপনি চালনা করেন scp file server:(ধরে নিচ্ছেন "সার্ভার" একটি বৈধ হোস্টনাম), ফাইলটি আপনার অ্যাকাউন্ট ডিরেক্টরিতে অনুলিপি করা হয়।
ড্যান_লিন্দার

3
আপনি "scp -v ফাইল সার্ভার:" চালানোর পরে আউটপুট সরবরাহ করতে পারেন?
ড্যান_লিন্দার

আপনি scpসার্ভারে অন্য কোনও জায়গায় চেষ্টা করতে পারেন , তারপরে cpবা তার mvপরেssh
জেসি ডাব্লু। কলিন্স

উত্তর:


68

এই ধরণের আচরণের একটি সম্ভাব্য কারণ সার্ভারে লগইন প্রক্রিয়া চলাকালীন কোনও বার্তা প্রিন্ট আউট করা। ক্লায়েন্ট এবং সার্ভারের মধ্যে সম্পূর্ণ স্বচ্ছ এনক্রিপ্টড টানেল সরবরাহ করতে এসপিএস নির্ভর করে ssh এর উপর।

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

scp, হুডের নীচে ssh ব্যবহার করে একটি সুড়ঙ্গ স্থাপন করে এবং তারপরে ফাইলটি ধরে রাখার জন্য প্রান্তে একটি ssh কমান্ড সহ ফাইলটি সেই সুড়ঙ্গের উপর দিয়ে স্থানান্তর করে। নিম্নলিখিত কমান্ডগুলি সহ মালিকানা এবং তৈরির সময় সংরক্ষণ করে এমন একটি ডিরেক্টরি কাঠামো অনুলিপি করতে ট্যার এবং এসএস ব্যবহার করে এটি চিত্রিত হয়েছে:

  tar czf - ./* | ssh jf@otherserver.com tar xzf - -C ~/saved_tree

এটি পাঠাতে, এবং

ssh jf@otherserver.com "tar czf - ~/saved_tree" | tar xzvf - -C ./

এটি ফিরে পেতে


এটি সত্যিই সহায়ক
ম্যাপেল

.Bashrc এর মধ্যে স্ক্র্যাপ সনাক্ত করা সম্ভব? যাতে আপনি শেলটি কোনও স্ক্রিপ না হলে কেবলমাত্র আউটপুট চেক করতে পারেন এবং মুদ্রণ করতে পারেন?
আলেকজান্দ্রোস

ব্যবহারকারীর জন্য বিশেষাধিকারের স্তর 15 হওয়াও প্রয়োজন the এছাড়াও, কেবলমাত্র আপনার ব্যবহারকারীর enableপাসওয়ার্ডটি টাইপ করতে এবং প্রবেশ করতে পারার অর্থ এই নয় যে তারা বেসরকারী 15 show run | inc USERNAME
টাইলার আবায়র

আমি মূলত আমার .bashrc থেকে রিমোট সার্ভারে "zsh" সরিয়েছি এবং scp কাজ শুরু করে!
গিক

আপনি যদি শেল ভেরিয়েবল (উদাঃ export SHELL=/bin/zsh) এর মধ্যে পরিবর্তন করেন তবে এটিও ভেঙে যায় ~/.bashrc। এটি কখনও কখনও অনুপস্থিতিতে ব্যবহৃত হয় chsh
সুয়েহেগি

57

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


10
EUREKA! এটি আমার সমস্যা কারণ আমার ভাগ্য | আমার দূরবর্তী .bashrc এ প্রতিটি লগইনে গায়েসী। এখন নিখুঁতভাবে কাজ।
টমাস ব্রাউন

3
আপনি স্যার, একটি জীবন রক্ষাকারী। :)
গৌরব মনচন্দ

4
আপনি যদি এখনও নিজের চান তবে fortune | cowsayএটি .bash_ প্রোফাইলে রেখে দিন। এটি কেবল ইন্টারেক্টিভ লগইনের জন্য এবং এসসিপি অধিবেশন চলাকালীন উত্সাহিত করা উচিত নয়।
স্পোলসন

আমার সমস্যাটি হ'ল আমি আমার অন্য একটি ফাইল স্যুরস করছিলাম .bashrcযা অন্য মেশিনে উপস্থিত থাকবে না। অ-ইন্টারেক্টিভ (যার ক্ষেত্রে এটি হয় ) এড়াতে আপনি এই উত্তরে যুক্তিটি ব্যবহার করতে পারেন । ~/.bashrcscp
উইসবাকি

15

সম্পাদনা: আপনি কী ইতিবাচক? আপনি scp কমান্ডে কোনও বৈধ পথে প্রবেশ করছেন? উদাহরণ স্বরূপ:

scp test.txt username@remoteserver.com

ব্যর্থ হবে (প্রকৃতপক্ষে, এটি আপনি যেমন কমান্ডটি দেখছেন ঠিক তেমনভাবে মুদ্রণ করবে)। এই ক্ষেত্রে, আপনাকে দূরবর্তী সার্ভারে একটি বৈধ পথ সরবরাহ করতে হবে .. উদাহরণস্বরূপ,scp test.txt username@remoteserver.com:~/

ব্যবহারের উদাহরণ:

একটি ফাইল পাঠান:

scp /path/to/local/file yourremoteusername@servername.com:/path/to/remote/directory

একটি ফাইল পান:

scp yourremoteusername@servername.com:/path/to/remote/file /path/to/local/directory

উদাহরণ:

আমার ডেস্কটপ থেকে আমার হোম ফোল্ডারে একটি রিমোট সার্ভারে একটি ফাইল প্রেরণ করুন:

scp ~/Desktop/myfile.txt john_doe@10.1.1.10:~/

মনে রাখবেন যে ~এটি আপনার হোম ডিরেক্টরিতে শর্টকাট ... যেমন, / হোম /

ওয়েবরুটে একটি ফাইল প্রেরণ করুন:

scp ~/Documents/working/index.html john_doe@johndoe.com:/var/www/index.html

এই উদাহরণস্বরূপ, john_doe ব্যবহারকারীর দূরবর্তী / var / www ডিরেক্টরিতে লেখার অধিকার প্রয়োজন।


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

@ ককিরা সম্ভবত, নাও থাকতে পারে। বৈধ পাথ প্রদান না করা scp কমান্ড ব্যর্থ হতে পারে .. উদাহরণস্বরূপ, scp somefile user@host.com:দূরবর্তী ডিরেক্টরিতে সঠিক অনুমতি না থাকাও সমস্যা তৈরি করতে পারে। আমার উত্তর সম্পাদিত একটু পরিষ্কার করতে চান
InChargeOfIT

1
আপনার উদাহরণগুলির মধ্যে কোনওটি "ফাইলের অস্তিত্ব নেই", আপনার কোনও উদাহরণের আওতায় নেই "সার্ভারের দিক থেকে
আকিরা

4

কিছু হোস্টে তারা স্কিপি .bash_profile-এর মতো অ-ইন্টারেক্টিভ লগইনগুলির জন্য ভুলভাবে উত্স দেয় । টার্মিনালে মুদ্রিত হওয়া বার্তাগুলি সম্ভবত scpসঠিকভাবে কাজ না করার কারণ হতে পারে । আপনার যদি বার্তাগুলি থাকে .bash_profileতবে এটি কারণ হতে পারে।

আপনার লগইন বার্তাগুলি, ব্যানার ইত্যাদির জন্য ইন্টারেক্টিভ লগইনগুলিতে প্রদর্শিত হতে পারে এবং এখনও scpকোনও অ-ইন্টারেক্টিভ লগইনের মাধ্যমে ব্যবহার করতে সক্ষম হতে আপনার .bash_profileফাইলে মুদ্রিত হওয়া কোনও বার্তার আগে নিম্নলিখিতটি যুক্ত করুন।

# ********** If not running interactively, don't do anything more! ***********

[ -z "$PS1" ] && return

বিকল্প কোডটি হ'ল:

[[ $- == *i* ]] || return

এবং অন্য একটি বিকল্প কোড:

case $- in
    *i*) ;;
      *) return;;
esac

যা আমি বিশ্বাস করি প্রথম বিকল্প কোডটির দীর্ঘতর সংস্করণ। আমি কিছু হোস্টে পেয়েছি প্রথম কোডটি সঠিকভাবে কাজ করে না তবে দ্বিতীয়টি করে does

একটি অ-ইন্টারেক্টিভ স্ক্রিপ লগইন চলাকালীন এটি .bash_profile এর আরও কার্যকরকরণ বাতিল করে এবং scp কে কাজ করার অনুমতি দেবে, তবে আপনি যখন ssh এর মাধ্যমে লগইন করবেন তখন আপনার লগইন বার্তাগুলি প্রদর্শন করবে।

দ্রষ্টব্য: এটি আপনার .bashrcফাইলে ব্যবহার করা যেতে পারে যদি আপনি এটি থেকে .bash_profile(AT PATH এর জন্য) উত্স পান তবে এটির কেবলমাত্র অংশ অ-ইন্টারেক্টিভ লগইনগুলির সময় উত্সাহিত হয়।


ধন্যবাদ মোহন মত কাজ করে ........
কিছু কিছু

0

এটি সরাসরি প্রশ্নের উত্তর দেয় না, তবে 2 টি দূরবর্তী হোস্টের মধ্যে ফাইল স্থানান্তর করার সময় আপনার মত লোকদের জন্য সহায়ক হিসাবে একটি ফ্রিজিং স্কিপ সহ সমাধানের সন্ধান করতে পারে।

যদি scpssh এর বার্তার কারণে হ্যাং হয়ে থাকে তবে এটি তাদের ছাড়িয়ে যেতে সহায়তা করতে পারে:

scp -o "StrictHostKeyChecking no"

এবং / অথবা

scp -B

স্কেপ ম্যান থেকে:

-বি ব্যাচ মোড নির্বাচন করে (পাসওয়ার্ড বা পাসফ্রেস জিজ্ঞাসা করতে বাধা দেয়)।

-o ssh_option আলাদা আলাদা স্কিপ কমান্ড-লাইন পতাকা নেই ব্যবহৃত বিন্যাসে ssh করতে বিকল্পগুলি পাস করতে ব্যবহার করা যেতে পারে। নীচে তালিকাভুক্ত বিকল্পগুলির সম্পূর্ণ বিবরণ এবং তাদের সম্ভাব্য মানগুলির জন্য ssh_config (5) দেখুন।

আমার ক্ষেত্রে যা সাহায্য বলে মনে হয়েছিল, কিন্তু পুরো সমস্যাটি সমাধান করেনি। রিমোট থেকে রিমোটে স্থানান্তরিত করার সময় scp কেন ঝুলে যায় তা আমরা খুঁজে পাইনি। এটি ফাইলের মাঝখানে স্তব্ধ হয়ে গেছে। 9 বার এটি কাজ করে, 10 নম্বর চেষ্টা করে নি। আমাদের সন্দেহ হয়েছিল যে এটি হ্যাং হয়ে যেতে পারে যখন আমাদের ভিপিএন সংযোগটি মুহুর্তের জন্য ট্র্যাফিক স্পাইক পায় এবং তারপরে স্কিপ পুনরুদ্ধার হয় না। এটি সত্যই চিরকাল স্থায়ী এবং এমনকি কোনও ত্রুটির বার্তা দেয় না।

যাইহোক, আমি ছেড়ে দিয়ে sftp এ চলেছি। এটি যুক্তিসঙ্গতভাবে দ্রুত, কারণ এটি দূরবর্তী হোস্টগুলির মধ্যে সরাসরি সংযোগ ব্যবহার করে। আপনি সক্ষম করতে হবে

Host example.com
    AgentForward yes

যদিও স্ক্রিপ্টটি চলছে মেশিনের ~ / .shh / কনফিগারেশন ফাইলটিতে। অবশ্যই এটি কেবলমাত্র একটি সমাধান যদি দূরবর্তী যন্ত্রগুলি উভয়ই আপনার বিশ্বস্ত নেটওয়ার্কের মধ্যে থাকে।


0

আমি আহ্বান ছিল exec /bin/bashমধ্যে .cshrc

এটি সরানো আমার জন্য সমস্যার সমাধান করেছে।

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