මුරපදය සමඟ SSH පිවිසුම ස්වයංක්‍රීය කරන්නේ කෙසේද?


465

මුරපදය සමඟ SSH පිවිසුම ස්වයංක්‍රීය කරන්නේ කෙසේද? මම මගේ පරීක්ෂණ VM වින්‍යාස කරමි, එබැවින් දැඩි ආරක්ෂාව නොසැලකේ. අවම වින්‍යාසය සහිත පිළිගත හැකි ආරක්ෂාව සඳහා SSH තෝරාගෙන ඇත.

උදා)

echo password | ssh id@server

මෙය ක්‍රියාත්මක නොවේ.

මට මතකයි මම මේක කළේ කවුරුහරි මට මඟ පෙන්වූ උපක්‍රම වලින්, නමුත් මට දැන් මතක නැහැ මම පාවිච්චි කළ උපක්‍රමය ...


2
FreeBSD මුරපද අඩු යතුරු පිළිගත්තේ නැත. පරීක්ෂාවට ලක් නොවන්න. කෙසේ වෙතත් සමහර ලිනක්ස් සේවාදායකයන් එය පිළිගත්තේය. මම විශ්වාස කරන්නේ ලිනක්ස් සේවාදායකය වැරදි ලෙස වින්‍යාස කර ඇති බවයි.
ඉයෝනිල්

20
මෙය වලංගු ප්‍රශ්නයකි. උදාහරණයක් ලෙස, පරිශීලකයෙකුට මුරපදයක් ඇතුළත් කිරීමට ඉඩ දීමට මට අවශ්‍යය, ඉන්පසු එය භාවිතා කර වෙනත් යන්ත්‍රයකට පිවිසෙන්න. අපේ සියලුම යන්ත්‍ර හරහා ssh යතුරු බෙදා හරිනු ඇතැයි මට සිතිය නොහැකිය. මෙතෙක් ලබා දී ඇති පිළිතුරු මෙම තත්වයට උපකාරී නොවේ.
dfrankow


ඉතා වැදගත් ප්‍රශ්නය. මටත් පිළිතුරක් අවශ්‍යයි, මගේ වෙබ් අවකාශය සපයන්නා විසින් සේවාදායකයේ යතුරු ගොනු තැබීම අවහිර කරයි, එබැවින් මම යතුරුපුවරු නොමැතිව මුරපදය පසු කළ යුතුය.
රේඩොන් 8472

Answers:


418

මුරපදයක් භාවිතා නොකරන්න. මුරපද රහිත SSH යතුරක් ජනනය කර එය ඔබගේ VM වෙත තල්ලු කරන්න.

ඔබට දැනටමත් SSH යතුරක් තිබේ නම්, ඔබට මෙම පියවර මඟ හැරිය හැක… 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ඔබගේ යතුරු මුරපදයකින් ආරක්‍ෂිතව තබා ගැනීමට උත්සාහ කිරීමට අවශ්‍ය නම් භාවිතා කිරීම පිළිබඳව සොයා බැලීමට ඔබට අවශ්‍ය විය හැකිය.


16
මම අවසානයේ යතුරු යුගල භාවිතා කිරීමට තීරණය කළෙමි. මොකද මම තේරුම් ගත්තා ඒක තමයි සරලම ක්‍රමය කියලා.
ඉයෝනිල්

9
OnEonil: පාස් වාක්‍යයකින් තොරව යතුරු භාවිතා කිරීමට පෙළඹෙන්න එපා. Ssh-agent හෝ පෙරහැර භාවිතා කරන්නේ කෙසේදැයි ඉගෙන ගන්න.
user9517

149
මෙය හොඳ පිළිතුරකි, නමුත් ප්‍රශ්නයට නිවැරදි පිළිතුර නොවේ.
ජෝන් හන්ට්

91
මේ ආකාරයේ පිළිතුරු ඇත්තෙන්ම මට කරදරයක්. එය ප්‍රශ්නය නොවේ. යතුරු යුගල භාවිතා කරන්නේ කෙසේදැයි කිසිවෙකු විමසුවේ නැත.
මැට් ෆ්ලෙචර්

24
මෙය ප්‍රශ්නයට පිළිතුරු සපයන්නේ නැත. එය සම්පූර්ණයෙන්ම වෙනස් ප්‍රශ්නයකට හොඳ පිළිතුරකි, නමුත් ඇසූ තැනැත්තාට එය භයානක ය.
srchulo

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

54
ඔව්, සමහර විට ඔබට විවිධ හේතූන් මත යතුරු මත පදනම් වූ සත්‍යාපනය භාවිතා කළ නොහැක .. නිදසුනක් ලෙස දැන් මට ප්ලෙස්ක් සේවාදායකයක යතුරු භාවිතා කළ නොහැක.
ජෝන් හන්ට්

18
+1! පැති සටහනක් ලෙස, RSA ඇඟිලි සලකුණ තහවුරු කිරීම සඳහා ඔබ sshභාවිතා කිරීමට පෙර එක් වරක් සරලව ධාවනය කළ යුතුයsshpass
user123444555621

28
-1 විධානයෙහි මුරපදය භාවිතා කිරීම සඳහා. මෙය මුරපදය .bash_historyඔබේ පරිගණකයේ සරල පා in යෙන් සටහන් කරයි .

16
IsterMisterDood history -rඔබේ ඉතිහාසය මකා දැමීමට ඔබට විධානය අනුගමනය කළ හැකිය . හොඳ කාරණයක්.
නියුක්ලියර්පියොන්

25
හිතකර උපදෙස්: .bash_history හි නිශ්චිත විධානයක් පෙන්වීමට ඔබට අවශ්‍ය නැතිනම්, විධානයක් අවකාශයක් සමඟ උපසර්ග කරන්න. එය ක්‍රියාත්මක වේ. කෙසේ වෙතත්, මෙම විධානය භාවිතා කරන්නන් වැඩි සැලකිල්ලක් දැක්විය යුත්තේ පද්ධතියේ වරප්‍රසාද නොලත් පරිශීලකයින්ට ps සමඟ සම්පූර්ණ විධාන රේඛාව දැකිය හැකි අතර, ඇත්ත වශයෙන්ම මුරපදය ඇතුළත් වේ. Ssh සැසි දිගු කල් පවතින බැවින් මෙය ආරක්ෂක ගැටළුවක්.
කියුබික්සොෆ්ට්

77

ඔබේ ප්‍රශ්නයට නිවැරදි පිළිතුර sshpass වන අතර ( විස්තර සඳහා වෙනත් පිළිතුර බලන්න ), වඩා ආරක්ෂිත ක්‍රමයක් ඇත - SSH යතුරු. ඔබ විසඳුමෙන් පහසු පියවර තුනක් පමණි :

Rsa යතුරු පුවරුවක් ජනනය කිරීම ආරම්භ කිරීමට පහත විධානය ඇතුළත් කරන්න :

# ssh-keygen

'යතුර සුරැකීමට ගොනුව ඇතුළත් කරන්න' යන පණිවිඩය දිස්වන විට, එන්ටර් එබීමෙන් ගොනු නාමය හිස්ව තබන්න.

මුරපදයක් ඇතුළත් කිරීමට ටර්මිනලය ඔබෙන් ඉල්ලා සිටින විට, මෙයද හිස්ව තබා Enter ඔබන්න.

යතුරු පුවරුව එක් සරල විධානයකින් සේවාදායකයට පිටපත් කරන්න :

# ssh-copy-id userid@hostname

ඔබට දැන් මුරපදයක් නොමැතිව පිවිසිය හැකිය :

# ssh userid@hostname

2
පෙරනිමි අගයන් සමඟ හොඳින් ක්‍රියා කරයි. උත්සාහ කිරීමේදී ~ / rsa4live.pub භාවිතා කිරීම මට ප්‍රයෝජනවත් නොවීය ssh-copy-id.
සීස් ටිමර්මන්

1
ඔබට මෙම පියවර වෙනස් පරිශීලකයෙකු සඳහා වැඩ කිරීමට අවශ්‍ය නම්, 1. ssh-keygen 2. ssh-copy-id nazir @ hostname 3. ssh nazir @ hostname
Venfah Nazir

2
මට නම් එයssh-copy-id -i ~/.ssh/tatu-key-ecdsa user@host
ගේබ්‍රියෙල් ප්‍රදර්ශනය

22
මෙය ප්‍රශ්නයට පිළිතුරක් නොවේ.
ස්ටීව් බෙනට්

3
හා? පිළිතුර ඉහළින්, sshpass ...
lzap

42

අපේක්ෂාව භාවිතා කරන්න:

#!/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
එය ක්‍රියාත්මක වූ නමුත් දුරස්ථ යන්ත්‍රයේ stdout මුද්‍රණය කළ නොහැක.
ඉයෝනිල්

සෑම විටම IP ලිපිනය වෙනස් වන බැවින් සමහර යන්ත්‍රවලට යතුර කල්තියා තැබිය නොහැක.
ලැරිකයි

4
-oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/nullදන්නා_හෝස්ට් වලට යන්ත්රය පිළිගැනීම වළක්වා ගැනීම සඳහා ssh විධානය සඳහා එකතු කිරීම හොඳ වනු ඇත
larrycai

B .. b නමුත් muh ssh යතුරු ...
ඩේමියන් Ó Ceallaigh

මෙම ස්ක්‍රිප්ටයේ වඩාත් සවිස්තරාත්මක උදාහරණය ඔබට සොයාගත හැකිය: linuxaria.com/howto/… මෙහි ඇති උදාහරණ දුරස්ථ විධාන සමඟද ක්‍රියා කළ යුතුය
Radon8472

19

මම කාටවත් සඳහන් පුදුම වෙමි plinkසිට putty-toolsඋබුන්ටු සමග පැකේජය:

plink user@domain -pw mypass  [cmd]

එය වින්ඩෝස් වලද ලබා ගත හැකි අතර සින්ටැක්ස් බොහෝ දුරට විවෘත සේවාදායකයා සමඟ අනුකූල වේ.


2
කවුළු සඳහා ඔබේ පිළිතුර හොඳයි, නොවරදවාම ලිනක්ස් / යුනික්ස් භාවිතා කරන්නා සාමාන්‍යයෙන් ගිලිහී නොයයි
රේඩොන් 8472

4
එය putty-toolsපැකේජයේ ඇත
eadmaster

2
ඔබගේ තත්වයන් අනුව, මෙය තවමත් දැඩි ලෙස අනාරක්ෂිත ය. විධාන රේඛාවේ මුරපද ක්‍රියාවලි ලැයිස්තුවේ දැකිය හැකි අතර එය ඔබගේ කවචය මඟින් ලොග් විය හැක.
antiduh

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

12

SSH තනි පුරනය වීම සාමාන්‍යයෙන් පොදු යතුරු සත්‍යාපනය සහ සත්‍යාපන නියෝජිතයා සමඟ ළඟා වේ. ඔබගේ පරීක්ෂණ VM යතුර දැනට පවතින සත්‍යාපන නියෝජිතයෙකුට පහසුවෙන් එකතු කළ හැකිය (පහත උදාහරණය බලන්න). Gssapi / kerberos වැනි වෙනත් ක්‍රම පවතින නමුත් වඩාත් සංකීර්ණ වේ.

sshpass

පවතින passwordඑකම සත්‍යාපන ක්‍රමය ඇති අවස්ථාවන්හිදී, මුරපදය ස්වයංක්‍රීයව ඇතුළත් කිරීමට sshpass භාවිතා කළ හැකිය. කරුණාකර මෑන් පිටුවේ සුරක්ෂිතතා උපදේශන අංශය කෙරෙහි විශේෂ අවධානයක් යොමු කරන්න . මෙම විකල්ප තුනෙහිම, මුරපදය දෘශ්‍යමාන වේ හෝ යම් අවස්ථාවක සාමාන්‍ය පෙළෙහි ගබඩා වේ :

නිර්නාමික පයිප්ප (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 ක්‍රියාත්මක වන විට ඔබට සහ root හට ඔබේ ක්‍රියාවලියේ පරිසර විචල්‍යයන් (එනම් ඔබේ මුරපදය) කියවිය හැකිය cat /proc/<pid>/environ | tr '\0' '\n' | grep ^SSHPASS=. අවස්ථාවන්හි කවුළුව වඩා දිගු නමුත් තවමත් ඔබේම ක්‍රියාවලි හෝ මූලයට සීමා වී ඇත, වෙනත් පරිශීලකයින් නොවේ.

විධාන රේඛා තර්කය (අවම වශයෙන් ආරක්ෂිතයි)

 sshpass -p my_secret_password ssh user@host

මෑන් පිටුවේ විස්තර කර ඇති පරිදි මෙය පහසු නමුත් අඩු ආරක්ෂිත වේ. විධාන රේඛා තර්ක සියලු පරිශීලකයින්ට දැකිය හැකිය (උදා ps -ef | grep sshpass). sshpass තර්කය සැඟවීමට උත්සාහ කරයි, නමුත් ඔබගේ මුරපදය තර්කය මගින් සම්මත කර ඇති ආකාරය සියලු පරිශීලකයින්ට දැකගත හැකි කවුළුවක් තවමත් පවතී .

පැති සටහන

ඔබගේ bash සකසන්න HISTCONTROL විචල්ය කිරීමට ignorespaceහෝ ignorebothසහ අවකාශය සමඟ ඔබේ සංවේදී විධාන උපසර්ගය. ඒවා ඉතිහාසයේ සුරැකෙන්නේ නැත.


SSH පොදු යතුරු සත්‍යාපනය

# 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

මුරපදය ඉතා වැදගත් වේ. පුද්ගලික යතුරු ගොනුව කෙසේ හෝ ලබා ගන්නා ඕනෑම කෙනෙකුට මුරපදය නොමැතිව එය භාවිතා කළ නොහැක.

SSH සත්‍යාපන නියෝජිතයා සකසන්න

# 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

වාසිය නම් ඔබේ පුද්ගලික යතුර සංකේතනය කර ඇති අතර ඔබට එහි මුරපදය ඇතුළත් කළ යුත්තේ එක් වරක් පමණි (ආරක්ෂිත ආදාන ක්‍රමයක් හරහාද).


ඔබ ඇත්තටම පිළිතුරු විරුද්ධ නොහැකි නම්, "එහෙම කරන්න එපා" මේ ඔබ එය කළ යුත්තේ කෙසේද යන්න වේ! මෙම පිළිතුර සැබෑ ප්රශ්නය එවිට අවසානය ඔබගේ අයාචිත උපදෙස් දී විසි. හොඳ රැකියාවක් ronrolans.
ටිම්ම්ම්

8

මුරපදවලට වඩා SSH යතුරු භාවිතා කිරීමට ඔබට අවශ්‍ය නැති බව විශ්වාසද? ඒ ආකාරයෙන් එය ආරක්ෂිත සහ ස්වයංක්‍රීය ය.


3
මුරපදයකින් තොරව SSH යතුරු භාවිතා කිරීම ගොනුවක මුරපද භාවිතා කිරීමට වඩා තරමක් ආරක්ෂිත වේ.
යුන්සන්

10
unyunzen වැරදිය. යතුරු සත්‍යාපනය ඔබ ධාරක යතුර නොදැන සිටියද මිට්ම් ප්‍රහාර වලින් ආරක්ෂා කරයි. ප්‍රහාරකයෙකුට සේවාදායකයා ලෙස පෙනී සිටිය හැකි නමුත් කිසි විටෙකත් සැබෑ සේවාදායකයට සම්බන්ධ නොවේ. මුරපද සත්‍යාපනය සමඟ ඔබ සම්බන්ධ වන ඕනෑම සේවාදායකයකට (නීත්‍යානුකූල හෝ නැත) මුරපදය පෙනෙනු ඇත. එම හේතු නිසා මුරපදය රහිත ssh යතුරක් ගොනුවක මුරපදය ගබඩා කිරීමට වඩා ආරක්ෂිත වේ.
කැස්පර්ඩ්

15
මෙය පිළිතුරක් නොවේ.
ස්ටීව් බෙනට්

Te ස්ටීව් බෙනට් එය පිළිගත් පිළිතුරට සමාන වන අතර එය අඩු විස්තරයක් තිබුණද ඊට පෙර පළ කරන ලදි.
මයිකල් හැම්ප්ටන්

3
හොඳයි, මම කියන්නේ පිළිගත් පිළිතුර අසනු නොලැබූ ප්‍රශ්නයකට යහපත් පිළිතුරක් බවයි. මෙය කිසිවක් නොවේ.
ස්ටීව් බෙනට්

4

ඔබගේ ස්වයංක්‍රීය අවශ්‍යතා මත පදනම්ව, සමහර විට ඇන්සිබල් ඔබට හොඳ සුදුසුකමක් වනු ඇත. මුරපදය ඉල්ලා සිටීම, සුඩෝ මුරපදය ඉල්ලා සිටීම, භාවිතය වෙනස් කිරීමේ විවිධ ක්‍රම, ආරක්ෂිතව සංකේතාත්මක රහස් භාවිතා කිරීම (සුරක්ෂිතාගාරය) වැනි දෑ එයට මනාව කළමනාකරණය කළ හැකිය.

එය සුදුසු නොවේ නම්, වෙනත් පිළිතුරක යෝජනා කර ඇති පරිදි මම බලාපොරොත්තු වන්නැයි යෝජනා කරමි.


1

මම කැමතියි passh https://github.com/clarkwang/passh

sshpass නිර්මාණයෙන් කැඩී ඇත.

ssh සේවාදායකය දැනටමත් මගේ තුළ එකතු කර නොමැති විට known_hosts, sshpassමා දන්නා ධාරකයන්ට සේවාදායකය එක් කිරීමට පණිවිඩය පෙන්වන්නේ නැත,passh නැත, මෙම ගැටළුව ඇති නොකරන්න.

දුරස්ථ සේවාදායකයකට පිවිසෙන්න:

$ passh -p password ssh user@host
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.