ডাউনলোডের জন্য নির্বাচিত ফাইল এবং ডিরেক্টরি সহ এসসিপি কমান্ড প্রতিটি নতুন ফাইল বা ডিরেক্টরিতে পাসওয়ার্ডের জন্য জিজ্ঞাসা করে


9

আমার ফেডোরা 20 সিস্টেমে আমি প্রচুর স্কিপ ব্যবহার করি এবং আমি যখন এই কমান্ডটি চালাচ্ছি তখন এই দ্বিতীয় বারের মুখোমুখি হলাম:

scp -r -P PORT user@host:/home/user/something/{file1,folder1,folder2,folder3,folder4} folder/folder2/

এটি আমার কাছে স্থানান্তরিত প্রতিটি ফাইল / ডিরেক্টরিগুলির জন্য পাসওয়ার্ড জানতে চায়।

user@host's password: "password here"

প্রশ্ন:

এখানে কি হচ্ছে?

এটি কি সাধারণ, আমি ভাবি এটি খুব অদ্ভুত আচরণ?

উত্তর:


13

আপনার স্থানীয় শেল (সম্ভবত বাশ) প্রসারিত হচ্ছে

user@host:/home/user/something/{file1,folder1,folder2,folder3,folder4}

মধ্যে:

user@host:/home/user/something/file1 user@host:/home/user/something/folder1 user@host:/home/user/something/folder2 user@host:/home/user/something/folder3 user@host:/home/user/something/folder4

পরিবর্তে, আপনি এটি করতে পারেন:

scp -r -P PORT user@host:"/home/user/something/file1 /home/user/something/folder1 /home/user/something/folder2 /home/user/something/folder3 /home/user/something/folder4" folder/folder2/

বা, যদি আপনি জানেন যে দূরবর্তী প্রান্তে ব্যবহারকারীর লগইন শেলটি বাশ, আপনি ব্রেস সম্প্রসারণটিও ব্যবহার করতে পারেন:

scp -r -P PORT user@host:"/home/user/something/{file1,folder1,folder2,folder3,folder4}" folder/folder2/

রিমোট শেলটি স্থানীয় শেলের পরিবর্তে স্ট্রিংকে আর্গুমেন্টে বিভক্ত করতে।


5

হ্যাঁ, এটি স্বাভাবিক। যা ঘটে তা হ'ল কমান্ডটি চালানোর আগে আপনার শেলটি বন্ধনীগুলি প্রসারিত করে তাই আপনি যা করছেন তা আসলে

scp -r -P PORT user@host:/home/user/something/file1 \ 
               user@host:/home/user/something/folder1 \ 
               user@host:/home/user/something/folder3 \ 
               user@host:/home/user/something/folder4 folder/folder2

মূলত, scpএকাধিক সংযোগের অনুরোধগুলি দেখে তাই তাদের প্রত্যেকের জন্য একটি নতুন সংযোগ খোলে। একমুখীসহজ উপায়(@ গিহারার পরামর্শ অনুসারে কোটগুলি ব্যবহার করা এক-অফ অপারেশনের জন্য সহজ) এটি সমাধান করার জন্য পাসওয়ার্ডহীন সেটআপ করা ssh/ scp:

$ ssh-keygen 
$ ssh-copy-id -p PORT user@host

এই দুটি কমান্ড একবার চালানোর পরে (এবং প্রয়োজনীয়তার অনুরোধগুলির জবাব দেওয়া), আপনি ভবিষ্যতে সমস্ত এসএসএস সংযোগের জন্য কোনও পাসওয়ার্ড ব্যবহার না করে ssh/ সক্ষম করতে পারবেন scp। এটি i) আসলে আরও সুরক্ষিত এবং ii) আরও বেশি সুবিধাজনক।


+1, দুর্দান্ত উপায় (অবশ্যই ssh-keygen & ssh-copy-id শুধুমাত্র একবার তৈরি করতে হবে)। আমি বলব যে এটি আরও সুরক্ষিত ... কেবলমাত্র যদি আপনি নিশ্চিত হন যে ব্যক্তিগত অংশটি সেই ব্যবহারকারী ব্যতীত অন্য কারও দ্বারা "পৌঁছনীয়" নয় ... যা সর্বদা সহজ নয়।
অলিভিয়ার ডুলাক

@ অলিভারডুলাক আপনার অর্থ কি? এই ডিফল্টরূপে অনুমতি id.rsaথাকবে 600এবং sshএটি না করলে এমনকি কাজ করবে না। এর অর্থ এটি কারও কাছ থেকে নিরাপদ তবে rootকিছুই আসলেই নিরাপদ rootনয়, অবশ্যই পাসওয়ার্ড নয়।
টেরডন

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

@ অলিভিয়ারডুলাক আহ, যথেষ্ট ন্যায্য। আমি এটি উল্লেখ করার মতো মনে করি না কারণ 1) এটি ব্যবহার করার সময় স্বয়ংক্রিয়ভাবে ঘটে ssh-keygenএবং 2) এসএসএস / এসসিপি অভিযোগ করবে এবং ফাইলটি অন্য কারও দ্বারা পঠনযোগ্য যদি একটি পাসওয়ার্ড জিজ্ঞাসা করবে। অন্তত যাইহোক লিনাক্সে।
টেরডন

4

scp খুব স্মার্ট নয়: যখন একই দূরবর্তী হোস্টের ফাইলগুলি একাধিক কমান্ড লাইন আর্গুমেন্ট দেওয়া হয়, তখন এটি প্রতিটি আর্গুমেন্টের জন্য একটি নতুন সংযোগ খোলে।

আপনি এর rsyncপরিবর্তে ব্যবহার করতে পারেন scp, এটি এইভাবে স্মার্ট (এবং অন্যান্য উপায়ে)।

rsync -r -e 'ssh -P PORT' user@host:/home/user/something/{file1,folder1,folder2,folder3,folder4} folder/folder2/

আরেকটি পন্থা হয় একটি একক আর্গুমেন্ট পাস scpযে একাধিক ফাইল বর্ণনা

আপনার সিস্টেম সেট আপ করার জন্য একটি পৃথক পদ্ধতির হ'ল যাতে আপনাকে সর্বদা প্রমাণীকরণ করতে না হয়। সাধারণত, কী প্রমাণীকরণ সেট আপ করুন , যা বেশিরভাগ পরিস্থিতিতে আরও সুবিধাজনক এবং আরও সুরক্ষিত। বিকল্পভাবে বা অতিরিক্ত হিসাবে সংযোগ ভাগ করে নেওয়া সেট আপ করুন , যাতে আপনার প্রতি সেশনে একবারে প্রমাণীকরণের প্রয়োজন হয়। যাই হোক না কেন, একটি উপনাম সেট আপ করুন যাতে আপনাকে প্রতিবার ব্যবহারকারীর নাম এবং পোর্ট নির্দিষ্ট করতে হবে না। আপনার ~/.ssh/config:

ControlMaster auto
ControlPath ~/.ssh/control:%h:%p:%r

Host nick
HostName real-host-name.example.com
User bob
Port 1234

ssh -Nf nickকোনও সংযোগ খোলার জন্য চালান , এবং তারপরে সমস্ত সংযোগগুলি nickবিদ্যমান সংযোগটিতে পিগিগ্যাক করবে। এখন আপনি চালাতে পারেন

scp -r nick:/home/user/something/{file1,folder1,folder2,folder3,folder4} folder/folder2/
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.