কীভাবে পাসওয়ার্ড পাস করবেন?


296

আমি জানি এটি প্রস্তাবিত নয়, তবে ব্যবহারকারীর পাসওয়ার্ড স্ক্র্যাপে পাস করা কি আদৌ সম্ভব?

আমি একটি ব্যাচের কাজের অংশ হিসাবে scp- এর মাধ্যমে একটি ফাইল অনুলিপি করতে চাই এবং গ্রহণকারী সার্ভারের অবশ্যই একটি পাসওয়ার্ড প্রয়োজন এবং না, আমি সহজেই কী-ভিত্তিক প্রমাণীকরণে এটি পরিবর্তন করতে পারি না।


2
এছাড়াও (পরে) প্রশ্নটি দেখুন: stackoverflow.com/questions/1462284/… যেখানে একটি উত্তরে এটি করার অন্য সম্ভাব্য উপায়ের কথা উল্লেখ করা হয়েছে। (বিশেষ দ্রষ্টব্য: এই সদৃশ প্রশ্ন না হয় - এটি মূল যা অন্যান্য অনুরূপ হয়।)
জোনাথন Leffler

উত্তর:


35

আপনি এটিকে প্রত্যাশার মতো সরঞ্জাম দিয়ে স্ক্রিপ্ট করতে পারেন ( পাইথনের জন্য এক্সপেক্টেক্টের মতো হ্যান্ডিং বাইন্ডিংগুলিও রয়েছে )।


1
প্রত্যাশার লিঙ্কটি .nist.gov ভেঙে গেছে। সম্ভবত এটি ?: আশা.সোর্সফোর্জন.নেট
কাটাপোফ্যাটিকো

sudo apt-get ইনস্টল প্রত্যাশা
SDsolar

>> ব্রিউ ইনফরমেশন এসএসপাস ত্রুটি: "এসএইচপাস" নাম সহ কোনও উপলভ্য সূত্র আমরা এসএসপাস যোগ করব না কারণ এটি নবজাতক এসএসএইচ ব্যবহারকারীদের পক্ষে এসএসএইচ এর সুরক্ষা নষ্ট করা সহজ করে তোলে। ;)
লুকাশ এনপি এগগার

528

এসএসপাস ব্যবহার করুন :

sshpass -p "password" scp -r user@example.com:/some/remote/path /some/local/path

বাশার ইতিহাসে পাসওয়ার্ডটি প্রদর্শিত হয় না

sshpass -f "/path/to/passwordfile" scp -r user@example.com:/some/remote/path /some/local/path

দূরবর্তী হোস্ট থেকে আপনার স্থানীয় দিকে উপরের লিখিত সামগ্রীগুলি অনুলিপি করে।

ইনস্টল করুন:

  • Ubuntu / ডেবিয়ান
    • apt install sshpass
  • CentOS / Fedora
    • yum install sshpass
  • ম্যাক ডাব্লু / ম্যাকপোর্টস
    • port install sshpass
  • ম্যাক ডাব্লু / ব্রিউ
    • brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb

14
উবুন্টু 12.04-এ এটি কেবলমাত্র পাসওয়ার্ডের উপর একক উদ্ধৃতি (যেমন "পাসওয়ার্ডের পরিবর্তে 'পাসওয়ার্ড') নিয়ে কাজ করেছিল।
odedfos

6
@odedfos, হ্যাঁ আপনার একক উদ্ধৃতি ব্যবহার করা দরকার কারণ কিছু পাসওয়ার্ড উত্পন্ন অক্ষর ডাবল উদ্ধৃত স্ট্রিং
অন্তরঙ্গকরণের

7
এইভাবে আপনি sshpass ইনস্টল করেনapt-get install sshpass
জান-তেরজে সেরেনসেন

6
CentOS এ এটিyum -y install sshpass
jgritty

19
এটি করার সর্বাধিক সুরক্ষিত উপায় হ'ল পাসওয়ার্ড ফাইলের সাথে : sshpass -f পাসওডফিল` স্কিপ [...] . This way, the password won't show up in পিএসই তালিকা, ইত্যাদি এবং আপনি ফাইল অনুমতি দিয়ে পাসওয়ার্ডটি সুরক্ষা দিতে পারেন।
ক্রিস্টোফার শুল্টজ

49

যেমন একটি ssh কী উত্পন্ন:

ssh-keygen -t rsa -C "your_email@youremail.com"

এর সামগ্রীটি অনুলিপি করুন ~/.ssh/id_rsa.pub এবং শেষ পর্যন্ত এটি দূরবর্তী মেশিনে যুক্ত করুন~/.ssh/authorized_keys

দূরবর্তী মেশিনের অনুমতি রয়েছে 0700 for ~./ssh folderএবং তা নিশ্চিত করুন0600 for ~/.ssh/authorized_keys


35
আমি যেমন লিখেছি: না, আমি সহজেই কী-ভিত্তিক প্রমাণীকরণে স্যুইচ করতে পারি না।
আরজেলবার্গেল

3
এর চেয়ে আপনার কি .Authorised_keys বলতে চাচ্ছেন? authorization_keys?
হ্যালো ওয়ার্ল্ড

2
এর জন্য একটি বৈধ ব্যবহার হ'ল বাশ স্ক্রিপ্ট যা কোনও সার্ভারে একাধিক স্কিপ / এসএসএস কল করে যেখানে আপনি ব্যবহারকারীকে দূরবর্তী সার্ভারের পাসওয়ার্ড জানতে চাইতে চান। পাসওয়ার্ডটি ইতিহাসে প্রদর্শিত হবে না এবং আপনার পাসওয়ার্ডটির জন্য চ্যালেঞ্জিংয়ের উপযুক্ততা রয়েছে ... তবে কেবল একবার। আমি কোনও কী ফাইলটি ব্যবহার করতে চাই না কারণ আমি এখনও স্ক্রিপ্ট ব্যবহারকারীকে প্রমাণীকরণ করতে চাই।
ওয়েজ গ্রান্ট

2
আর একটি বৈধ ব্যবহার হ'ল যদি আপনি সহজেই টার্গেটে কী-ভিত্তিক প্রমাণীকরণ সক্ষম করতে না পারেন। উদাহরণ: অন্যতম মূল নাস প্রযোজক - তাদের ডিএসএম 6.০ সহ সংশ্লেষ - এটি ২০১ 2016 সালেও সমর্থন করে না Sure অবশ্যই, আপনি কনফিগারেশন ফাইলগুলির সাথে বিশৃঙ্খলা করতে পারেন এবং আশা করেন যে কোনও আপডেট কেবল এটিকে আবারও ওভাররাইট করতে পারবে না (ডিএসএম আপডেট করা প্রায়শই কাস্টম পরিবর্তনগুলিকে ভেঙে দেয় )। কখনও কখনও - বিশেষত যখন ওপি স্পষ্টভাবে লেখেন তারা ইতিমধ্যে সচেতন এটি অনুকূল নয় - মানুষের কেবল একটি সমাধান প্রয়োজন।
আআ

3
ssh-copy-id -i ~/.ssh/id_rsa.pub <remote_server>আপনার রিমোট সার্ভারে চাবিটি অনুলিপি করতে ব্যবহার করা উচিত
রুসউ

39

আপনি যদি উইন্ডোজ থেকে সার্ভারের সাথে সংযোগ স্থাপন করছেন, scp এর পুট্টি সংস্করণ ("pscp") আপনাকে -pwপ্যারামিটারের সাহায্যে পাসওয়ার্ডটি পাস করতে দেয় ।

এখানে ডকুমেন্টেশনে এটি উল্লেখ করা হয়েছে।


1
দয়া করে একটি উদাহরণ দেখান
এসডসোলার

এছাড়াও, এই কমান্ডগুলি ব্যবহার করতে আপনার পথে সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ পিটিআই যুক্ত করতে চাইবে।
এসডসোলার

1
@ এসডসোলার এখানে একটি বাক্য গঠন উদাহরণ: pscp -pw 'MyPa$$word' username@servername:/somedir/somefile ~/somedest(আমি এর মতো পুট্টি ব্যবহার করা ঘৃণা করি তবে এটি কার্যকর)
জেনারোমা

29

কার্ল কোনও ফাইল অনুলিপি করতে scp এর বিকল্প হিসাবে ব্যবহার করা যেতে পারে এবং এটি কমান্ডলাইনে একটি পাসওয়ার্ড সমর্থন করে।

curl --insecure --user username:password -T /path/to/sourcefile sftp://desthost/path/

এটি 'scp' এর চেয়ে বেশ ধীর তবে এটি কাজটি ভাল করে।
ভিক্টর

একটি বিশাল পাসওয়ার্ড প্রম্পট বিলম্বের সাথে গন্তব্যটি কনফিগার করা হলে আমি এটি দ্রুত হতে দেখেছি found scpআমাকে পাসওয়ার্ড দেওয়ার জন্য 30+ সেকেন্ড অপেক্ষা করতে হবে, তবে curlসঙ্গে সঙ্গে কাজ হয়েছে।
ঘোস্ট 8472

@ ঘোস্ট 8472 হ্যাঁ কনফিগার করা হয়েছে, তবে কখনও কখনও এই বিলম্ব হোস্টনামটি সমাধান করে এবং এসএফটিপি এর জন্যও ঘটে।
মেকেনজম

1
আমি পেয়েছি "কার্ল: (1) প্রোটোকল" sftp "সমর্থিত বা libcurl এ অক্ষম নয়"
ক্রোনাস

21

আপনি ইউনিক্স / টার্মিনালে 'প্রত্যাশা' স্ক্রিপ্টটি ব্যবহার করতে পারেন

উদাহরণস্বরূপ 'test.exp' তৈরি করুন:

#!/usr/bin/expect
        spawn scp  /usr/bin/file.txt root@<ServerLocation>:/home
        set pass "Your_Password"
        expect {
        password: {send "$pass\r"; exp_continue}
                  }

স্ক্রিপ্ট চালান

expect test.exp 

আমি আশা করি এটি সাহায্য করবে.


7
পূর্বশর্ত: sudo
অ্যাপটি

10

আপনি কীভাবে এটি expectসরঞ্জাম দিয়ে করেন তার উদাহরণ এখানে :

sub copyover {
    $scp=Expect->spawn("/usr/bin/scp ${srcpath}/$file $who:${destpath}
+/$file");
    $scp->expect(30,"ssword: ") || die "Never got password prompt from
+ $dest:$!\n";
    print $scp 'password' . "\n";
    $scp->expect(30,"-re",'$\s') || die "Never got prompt from parent 
+system:$!\n";
    $scp->soft_close();
    return;
}

2
এটি পার্লে রয়েছে, দুঃখিত আমি এটি লিখিনি। (5 বছর আগে :))
এস্পো

8

এটির কথা কেউ উল্লেখ করেনি, তবে পুট্টি স্কিপ (পিএসএসপি) এর পাসওয়ার্ডের জন্য একটি -pw বিকল্প রয়েছে।

ডকুমেন্টেশন এখানে পাওয়া যাবে: https://the.earth.li/~sgtatham/putty/0.67/htmldoc/Chapter5.html#pscp


9
এটি 5 বছর আগে ব্যবহারকারী 524607 এর উত্তরে উল্লেখ করা হয়েছিল ।
বার্মার

এটি খুঁজে পেয়েছে এবং আমার পথে সি: \ প্রোগ্রাম ফাইলগুলি (x86) \ পুটি যুক্ত করছে।
এসডসোলার

3

আপনি ssh-copy-idssh কী যুক্ত করতে ব্যবহার করতে পারেন :

$which ssh-copy-id #check whether it exists

যদি উপস্থিত থাকে:

ssh-copy-id  "user@remote-system"

3

ssh-keygenউপরে বর্ণিত হিসাবে একবার সেট আপ করার পরে , আপনি এটি করতে পারেন

scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/

আপনি যদি প্রতিবার টাইপিং কম করতে চান তবে আপনি নিজের .bash_profileফাইলটি সংশোধন করে রাখতে পারেন

alias remote_scp='scp -i ~/.ssh/id_rsa /local/path/to/file remote@ip.com:/path/in/remote/server/

তারপরে আপনার টার্মিনাল থেকে করুন source ~/.bash_profile। এরপরে আপনি remote_scpযদি আপনার টার্মিনালটিতে টাইপ করেন তবে scpএটি পাসওয়ার্ড ছাড়াই কমান্ডটি চালানো উচিত ।


2
  1. নিশ্চিত করুন যে আপনার কাছে আগে "প্রত্যাশা" সরঞ্জাম রয়েছে, যদি না হয় তবে তা করুন

    # apt-get install expect

  2. নিম্নলিখিত লিখিত সামগ্রী সহ একটি স্ক্রিপ্ট ফাইল তৈরি করুন। (# vi / রুট / স্ক্রিপ্টফিল)

    spawn scp /path_from/file_name user_name_here@to_host_name:/path_to

    expect "password:"

    send put_password_here\n;

    interact

  3. স্ক্রিপ্ট ফাইলটি "প্রত্যাশা" সরঞ্জাম দিয়ে চালিত করুন

    # expect /root/scriptfile


1

এই ব্লগ পোস্টের উপর ভিত্তি করে একজন দরিদ্র ব্যক্তির লিনাক্স / পাইথন / প্রত্যাশার মতো উদাহরণ: সাধারণ শেলগুলি সম্পূর্ণ ইন্টারেক্টিভ টিটিওয়াইতে আপগ্রেড করা । আমার পুরানো মেশিনগুলির জন্য এটি দরকার ছিল যেখানে আমি পাইথনে ম্যাকুয়াল ইনস্টল বা মডিউল যুক্ত করতে পারি না।

কোড:

(
    echo 'scp jmudd@mysite.com:./install.sh .'
    sleep 5
    echo 'scp-passwd'
    sleep 5
    echo 'exit'
) |

python -c 'import pty; pty.spawn("/usr/bin/bash")'

আউটপুট:

scp jmudd@mysite.com:install.sh .
bash-4.2$ scp jmudd@mysite.com:install.sh .
Password: 
install.sh                                 100%   15KB 236.2KB/s   00:00    
bash-4.2$ exit
exit

0

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

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


4
প্রশ্নে বলা হয়েছে যে তিনি কী-ভিত্তিক প্রমাণীকরণ ব্যবহার করতে পারবেন না।
বার্মার

2
এছাড়াও, যদি এটি আমার হয় তবে আমি ধরে নিই যে আমি অন্য সার্ভারটি পরিবর্তন করতে পারি না - কেবল আমারই একটি ফাইল অনুলিপি করা উচিত।
এসডসোলার

-1

উপরে উল্লিখিত সমস্ত সমাধানগুলি কেবলমাত্র তখনই কাজ করতে পারে যদি আপনি অ্যাপ্লিকেশন ইনস্টল করেন বা আপনার কাছে sshpass ব্যতীত ইনস্টলের প্রশাসকের অধিকার থাকা উচিত।

আমি ব্যাকগ্রাউন্ডে কেবল স্কিপ শুরু করতে এটি খুব দরকারী লিঙ্কটি পেয়েছি।

$ nohup scp file_to_copy user@server:/path/to/copy/the/file > nohup.out 2>&1

https://charmyin.github.io/scp/2014/10/07/run-scp-in-background/


1
কিভাবে ব্যাকগ্রাউন্ড ইনপুট পাসওয়ার্ড স্ক্র্যাপ চালানো হবে ??
থমাস.হান

-3

রেল / সেন্টোস 6 এর জন্য এসএসপাস পাওয়ার পদক্ষেপগুলি:

# wget http://epel.mirror.net.in/epel/6/i386/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm
# yum install sshpass

উত্স: https://commune.mapr.com/thread/9040


-9

আমি এখানে সত্যিই সহায়ক উত্তর খুঁজে পেয়েছি ।

rsync -r -v --progress -e ssh user@remote-system:/address/to/remote/file /home/user/

আপনি কেবল সেখানে পাসওয়ার্ডটিই পাস করতে পারবেন না, অনুলিপি করার সময় এটি অগ্রগতি বারটি প্রদর্শন করবে। সত্যিই অসাধারণ.


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