পাসওয়ার্ড সহ এসএসএইচ লগইন কীভাবে স্বয়ংক্রিয় করবেন?


419

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

প্রাক্তন)

echo password | ssh id@server

এটি কাজ করে না।

আমার মনে আছে আমি এই কৌশলটি কেউ কেউ আমাকে নির্দেশিত করে দিয়েছিলাম তবে এখন আমি মনে করি না যে কৌশলটি আমি ব্যবহার করেছি ...


2
ফ্রিবিএসডি পাসওয়ার্ড-কম কীগুলি গ্রহণ করে নি। প্রলোভিত হবেন না। তবে কিছু লিনাক্স সার্ভার এটি গ্রহণ করেছে। আমি বিশ্বাস করি লিনাক্স সার্ভারটি ভুল কনফিগার করা হয়েছিল।
Eonil

16
এটি একটি বৈধ প্রশ্ন। উদাহরণস্বরূপ, আমি কোনও ব্যবহারকারীকে একটি পাসওয়ার্ড প্রবেশ করার অনুমতি দিতে চাই, তারপরে এটি ব্যবহার করে অন্য কোনও মেশিনে লগ ইন করুন। আমি ধরে নিতে পারি না যে আমাদের সমস্ত মেশিনে ssh কী বিতরণ করা হবে। এখন পর্যন্ত নীচের উত্তরগুলি এই পরিস্থিতিতে সহায়তা করে না।
dfrankow


খুব গুরুত্বপূর্ণ প্রশ্ন। আমারও একটি উত্তর দরকার, আমার ওয়েবস্পেস সরবরাহকারী সার্ভারে কীফাইল লাগাতে ব্লক করে, তাই আমাকে অবশ্যই কীফাইল ছাড়াই পাসওয়ার্টটি পাস করতে হবে।
Radon8472

উত্তর:


382

একটি পাসওয়ার্ড ব্যবহার করবেন না। একটি পাসফ্রেজবিহীন এসএসএইচ কী তৈরি করুন এবং এটি আপনার ভিএম-তে চাপ দিন।

আপনার যদি ইতিমধ্যে একটি এসএসএইচ কী থাকে তবে আপনি এই পদক্ষেপটি এড়িয়ে যেতে পারেন… Enterকী এবং উভয় পাসফ্রেজের জন্য কেবল হিট করুন:

$ ssh-keygen -t rsa -b 2048
Generating public/private rsa key pair.
Enter file in which to save the key (/home/username/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/username/.ssh/id_rsa.
Your public key has been saved in /home/username/.ssh/id_rsa.pub.

টার্গেট সার্ভারে আপনার কীগুলি অনুলিপি করুন:

$ ssh-copy-id id@server
id@server's password: 

এখন মেশিনে লগ ইন করার চেষ্টা করুন, সহ ssh 'id@server'এবং চেক ইন করুন:

.ssh/authorized_keys

আপনি আশা করছেন না এমন অতিরিক্ত কীগুলি আমরা যোগ করি নি তা নিশ্চিত করার জন্য।

অবশেষে লগ ইন চেক করুন ...

$ ssh id@server

id@server:~$ 

আপনি ssh-agentযদি পাসফ্রেজের সাহায্যে কীগুলি সুরক্ষিত রাখতে চেষ্টা করতে চান তবে আপনি এটি ব্যবহার করতেও চাইবেন ।


14
আমি শেষ পর্যন্ত কী জোড় ব্যবহার করার সিদ্ধান্ত নিয়েছি। কারণ আমি বুঝতে পারি যে এটি সবচেয়ে সহজ উপায় way
ইওনিল

9
@ ইউনিল: পাস বাক্যাংশ ছাড়া কী ব্যবহার করার প্রলোভন করবেন না। কীভাবে ssh- এজেন্ট বা পেজেন্ট ব্যবহার করবেন তা শিখুন।
ব্যবহারকারী 619714

119
এটি একটি ভাল উত্তর, তবে প্রশ্নের সঠিক উত্তর নয়।
জন হান্ট

74
এই ধরণের উত্তর সত্যিই আমাকে বিরক্ত করে। প্রশ্ন ছিল না। কী কী কী ব্যবহার করবেন তা কেউ জিজ্ঞাসা করেনি।
ম্যাট ফ্লেচার

16
এটি প্রশ্নের উত্তর দেয় না। এটি সম্পূর্ণ আলাদা প্রশ্নের উত্তম উত্তর, তবে জিজ্ঞাসা করা ব্যক্তির পক্ষে এটি ভয়ানক।
শ্রোলো

594
$ sudo apt-get install sshpass
$ sshpass -p your_password ssh user@hostname

51
হ্যাঁ, কখনও কখনও আপনি বিভিন্ন কারণে কী ভিত্তিক লেখক ব্যবহার করতে পারবেন না ... উদাহরণস্বরূপ এখনই আমি প্লেস্ক সার্ভারে কেয়াথ ব্যবহার করতে পারি না কারণ বাক্সটি সক্রিয় নয় এবং আমার মূল নেই।
জন হান্ট

17
+1 টি! পার্শ্ব নোট হিসাবে, আপনাকে আরএসএ আঙুলের sshsshpass
ছাপটি

21
-1 কমান্ডে পাসওয়ার্ড ব্যবহার করার জন্য। এটি .bash_historyআপনার মেশিনের সরল পাঠ্যে পাসওয়ার্ডটি লগ করে ।

15
@ মিস্টারডুড আপনি history -rআপনার ইতিহাস মুছতে কমান্ডটি অনুসরণ করতে পারেন। যদিও ভাল পয়েন্ট।
নিউক্লিয়ার পিওন

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

71

আপনার প্রশ্নের সঠিক উত্তর শেশকি থাকলেও আরও নিরাপদ উপায় রয়েছে - এসএসএইচ কীগুলি। সমাধান থেকে আপনি কেবল তিনটি সহজ পদক্ষেপ দূরে রয়েছেন:

একটি আরএসএ কিপাইর তৈরি করুন :

# ssh-keygen

তারপরে এটি একটি সাধারণ কমান্ড দিয়ে সার্ভারে অনুলিপি করুন :

# ssh-copy-id userid@hostname

আপনি এখন পাসওয়ার্ড ছাড়াই লগ ইন করতে পারেন :

# ssh userid@hostname

1
ডিফল্ট মানগুলির সাথে সূক্ষ্মভাবে কাজ করে। চেষ্টা করার সময় for / rsa4live.pub ব্যবহার করা আমার পক্ষে কাজ করে না ssh-copy-id
সিস টিমারম্যান

1
আপনি যদি এই পদক্ষেপগুলি বিভিন্ন ব্যবহারকারীর জন্য কাজ করতে চান তবে, 1. ssh-keygen 2. ssh-copy-id নাজির @ হোস্টনাম ৩. ssh নাজির @ হোস্টনাম
ভেনফাহ নাজির

2
আমার জন্য এটি ছিলssh-copy-id -i ~/.ssh/tatu-key-ecdsa user@host
গ্যাব্রিয়েল ফেয়ার

21
এটি প্রশ্নের উত্তর নয়।
স্টিভ বেনেট

2
এবং? উত্তর উপরে, sshpass ...
lzap

40

ব্যবহার প্রত্যাশা:

#!/usr/bin/expect -f
#  ./ssh.exp password 192.168.1.11 id
set pass [lrange $argv 0 0]
set server [lrange $argv 1 1]
set name [lrange $argv 2 2]

spawn ssh $name@$server
match_max 100000
expect "*?assword:*"
send -- "$pass\r"
send -- "\r"
interact

উদাহরণ:

# ./1.ex password localhost ooshro
spawn ssh ooshro@localhost
ooshro@localhost's password: 
Linux ubuntu-1010-server-01 2.6.35-25-generic-pae #44-Ubuntu SMP Fri Jan 21 19:01:46 UTC 2011 i686 GNU/Linux
Ubuntu 10.10

Welcome to Ubuntu!
 * Documentation:  https://help.ubuntu.com/
Last login: Tue Mar  1 12:41:12 2011 from localhost

2
এটি কাজ করেছে তবে এটি দূরবর্তী মেশিনের স্টাডআউট মুদ্রণ করতে পারে না।
ইওনিল

এটি আইপি অ্যাড্রেস প্রতিবার পরিবর্তিত হওয়ার কারণে কোনও মেশিন চাবি আগেই রাখতে পারে না এটির জন্য এটি ভাল কাজ করে।
ল্যারিচাই

4
এটি যোগ করতে ভাল হবে -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/nullSSH কমান্ড জন্য ভাল হিসাবে known_hosts মধ্যে মেশিন গ্রহণ এড়াতে
larrycai

খ .. বি তবে মুহ এসএস কীগুলি ...
ড্যামিয়েন Ó সিয়ালাইঘ

এই স্ক্রিপ্টটির আরও বিশদ উদাহরণ আপনি এখানে পেতে পারেন: linuxaria.com/howto/… এই উদাহরণগুলি এখানে দূরবর্তী কমান্ডগুলির সাথেও কাজ করা উচিত
Radon8472

16

এটি আপনার কোনও ব্যবহার নাও হতে পারে তবে পার্ল দিয়ে আপনি এটি করতে পারেন:

\#!/usr/bin/perl  
use warnings;  
use strict;  

use Net::SSH::Perl;  
my $host = 'remote.serv.er';  
my $user = 'root';  
my $pass = 'hunter2';  
my $ssh = Net::SSH::Perl->new('$host');  
$ssh->login('$user', '$pass') or die "Oh noes! $!";

2
তেমনি, আপনি এই রুবি github.com/net-ssh/net-ssh
EnabrenTane

15

আমি অবাক হয়েছি উবুন্টুতে প্যাকেজটি plinkথেকে কেউ উল্লেখ putty-toolsকরেননি:

plink user@domain -pw mypass  [cmd]

এটি উইন্ডোতেও পাওয়া যায় এবং সিনট্যাক্স বেশিরভাগ ক্ষেত্রে ওপেনশায় ক্লায়েন্টের সাথে সুসংগত।


উইন্ডোজগুলির জন্য আপনার উত্তরটি ভাল, অব্যর্থতভাবে লিনাক্স / ইউনিক্স ব্যবহারকারী সাধারণত প্লিংক করবেন না
Radon8472

2
এটি putty-toolsপ্যাকেজে রয়েছে
ইডমাস্টার

10

এসএসএইচ একক সাইন-অন সাধারণত পাবলিক কী প্রমাণীকরণ এবং একটি প্রমাণীকরণ এজেন্ট দ্বারা অর্জন করা হয়। আপনি কোনও বিদ্যমান লেখক এজেন্টের সাথে সহজেই আপনার পরীক্ষা ভিএম কী যুক্ত করতে পারেন (নীচের উদাহরণ দেখুন)। অন্যান্য পদ্ধতি যেমন গেসাপি / কার্বেরোস বিদ্যমান তবে এটি আরও জটিল।

sshpass

এমন পরিস্থিতিতে যেখানে passwordএকমাত্র প্রমাণীকরণ পদ্ধতি উপলভ্য, সেখানে স্বয়ংক্রিয়ভাবে পাসওয়ার্ড প্রবেশের জন্য sshpass ব্যবহার করা যেতে পারে। ম্যান পৃষ্ঠার সিকিউরিটি কনসাইডারেশন বিভাগে দয়া করে বিশেষ মনোযোগ দিন । তিনটি অপশনে, পাসওয়ার্ডটি দৃশ্যমান বা কোনও পর্যায়ে প্লেইন টেক্সটে সংরক্ষণ করা হয় :

নামবিহীন পাইপ (এসপিএস দ্বারা প্রস্তাবিত)

# Create a pipe
PIPE=$(mktemp -u)
mkfifo -m 600 $PIPE
# Attach it to file descriptior 3
exec 3<>$PIPE
# Delete the directory entry
rm $PIPE
# Write your password in the pipe
 echo 'my_secret_password' >&3
# Connect with sshpass -d
sshpass -d3 ssh user@host

# Close the pipe when done
exec 3>&-

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

পরিবেশ সূচক

# Set your password in an environment variable
 export SSHPASS='my_secret_password'
# Connect with sshpass -e
sshpass -e ssh user@host

Sshpass চলমান থাকাকালীন আপনি এবং রুট আপনার প্রক্রিয়াটির পরিবেশগত ভেরিয়েবলগুলি (যেমন আপনার পাসওয়ার্ড) পড়তে পারেন cat /proc/<pid>/environ | tr '\0' '\n' | grep ^SSHPASS=। সুযোগের উইন্ডোটি অনেক দীর্ঘ তবে এখনও আপনার নিজস্ব প্রক্রিয়া বা রুটের মধ্যে সীমাবদ্ধ, অন্য ব্যবহারকারীদের নয়।

কমান্ড-লাইন আর্গুমেন্ট (কমপক্ষে সুরক্ষিত)

 sshpass -p my_secret_password ssh user@host

ম্যান পৃষ্ঠাতে বর্ণিত হিসাবে এটি সুবিধাজনক তবে কম সুরক্ষিত। কমান্ড লাইন যুক্তি সকল ব্যবহারকারীর কাছে দৃশ্যমান (যেমন ps -ef | grep sshpass)) sshpass আর্গুমেন্টটি আড়াল করার চেষ্টা করে, তবে এখনও একটি উইন্ডো রয়েছে যা চলাকালীন সমস্ত ব্যবহারকারী আপনার যুক্তি দিয়ে পাসওয়ার্ডটি দেখতে পাবে।

সাইড নোট

আপনার ব্যাশ সেট HISTCONTROL পরিবর্তনশীল করতে ignorespaceবা ignorebothএবং একটি স্পেস দিয়ে আপনার সংবেদনশীল কমান্ড প্রিফিক্স। তারা ইতিহাসে সংরক্ষণ করা হবে না।


এসএসএইচ পাবলিক কী প্রমাণীকরণ

# Generate a key pair
# Do NOT leave the passphrase empty
ssh-keygen
# Copy it to the remote host (added to .ssh/authorized_keys)
ssh-copy-id user@host

পাসফ্রেজটি খুব গুরুত্বপূর্ণ। যে কোনওভাবে প্রাইভেট কী ফাইলটি পাসফ্রেজ ছাড়াই এটি ব্যবহার করতে সক্ষম হবে না।

এসএসএইচ প্রমাণীকরণ এজেন্ট সেটআপ করুন

# Start the agent
eval `ssh-agent`
# Add the identity (private key) to the agent
ssh-add /path/to/private-key
# Enter key passphrase (one time only, while the agent is running)

যথারীতি সংযোগ করুন

ssh user@host

সুবিধাটি হ'ল আপনার প্রাইভেট কীটি এনক্রিপ্ট করা হয়েছে এবং আপনাকে কেবল একবার এর পাসফ্রেজটি প্রবেশ করতে হবে (নিরাপদ ইনপুট পদ্ধতির মাধ্যমেও)।


8

নিশ্চিত যে আপনি পাসওয়ার্ডের চেয়ে এসএসএইচ কী ব্যবহার করতে চান না? এইভাবে এটি নিরাপদ এবং স্বয়ংক্রিয় উভয়ই।


3
পাসওয়ার্ড ছাড়াই এসএসএইচ কী ব্যবহার করা কোনও ফাইলে পাসওয়ার্ড ব্যবহারের চেয়ে কিছুটা বেশি সুরক্ষিত।
ইউনজেন

10
@unzen ভুল কী প্রমাণীকরণ আপনাকে হোস্ট কী না জানালেও মিটম-আক্রমণ থেকে রক্ষা করে। একজন আক্রমণকারী সার্ভারটির ছদ্মবেশ তৈরি করতে পারে, তবে কখনই আসল সার্ভারের সাথে সংযুক্ত হয় না। পাসওয়ার্ড প্রমাণীকরণের সাথে আপনি যে কোনও সার্ভারের সাথে সংযুক্ত হন (বৈধ বা না) পাসওয়ার্ডটি দেখতে পাবেন। এই কারণে পাসওয়ার্ড ছাড়াই একটি ssh কী একটি ফাইলের মধ্যে পাসওয়ার্ড সংরক্ষণ করার চেয়ে অনেক বেশি সুরক্ষিত।
কাস্পারড

14
এটি কোনও উত্তর নয়।
স্টিভ বেনেট

@ স্টেভেবেনেট এটি স্বীকৃত উত্তরের মতো এবং এটির আগে পোস্ট করা হয়েছিল যদিও এর কম বিশদ রয়েছে।
মাইকেল হ্যাম্পটন

3
ঠিক আছে, আমি বলব গৃহীত উত্তর হ'ল এমন প্রশ্নের উত্তম উত্তর answer এটি কিছুই নয়।
স্টিভ বেনেট

4

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

যদি এটি উপযুক্ত না হয় তবে আমি অন্য উত্তরে প্রস্তাবিত হিসাবে প্রত্যাশার পরামর্শ দেব।

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