ssh: යතුරු ස්වයංක්‍රීයව භාර ගන්න


240

මම මෙම කුඩා උපයෝගිතා පිටපත ලියා ඇත:

for h in $SERVER_LIST; do ssh $h "uptime"; done

නව සේවාදායකයක් එකතු කළ විට $SERVER_LIST, ස්ක්‍රිප්ට් එක නවත්වන්නේ:

The authenticity of host 'blah.blah.blah (10.10.10.10)' can't be established.
RSA key fingerprint is a4:d9:a4:d9:a4:d9a4:d9:a4:d9a4:d9a4:d9a4:d9a4:d9a4:d9.
Are you sure you want to continue connecting (yes/no)?

මම උත්සාහ කළා yes:

for h in $SERVER_LIST; do yes | ssh $h "uptime"; done

වාසනාව නැතිව.

sshකිසියම් නව යතුරක් ස්වයංක්‍රීයව පිළිගැනීමට පරාමිතිකරණය කිරීමට ක්‍රමයක් තිබේද?


6
ලෙකන්ස්ටයින්ගේ පිළිතුර විශිෂ්ට සහ නිවැරදි ය, නමුත් මට සටහන් කිරීමට අවශ්‍ය වූයේ ssh "ඔව්" සහ yes"y" ප්‍රතිදානයන් අපේක්ෂා කරන බැවින් , ඔබට වඩා හොඳ වාසනාවක් ලැබෙන්නට ඇති බවයි for h in $SERVER_LIST; do yes yes | ssh $h "uptime"; done(අමතර ඔව් සටහන් කරන්න, එය ඔව් වෙනුවට "y" ").
chazomaticus

Answers:


274

උදාහරණයක් ලෙස StrictHostKeyChecking විකල්පය භාවිතා කරන්න:

ssh -oStrictHostKeyChecking=no $h uptime

මෙම විකල්පය ~ / .ssh / config ටද එකතු කළ හැකිය, උදා:

Host somehost
    Hostname 10.0.0.1
    StrictHostKeyChecking no

ධාරක යතුරු වෙනස් වූ විට, මෙම විකල්පය සමඟ වුවද ඔබට අනතුරු ඇඟවීමක් ලැබෙනු ඇති බව සලකන්න:

$ ssh -oStrictHostKeyChecking=no somehost uptime
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
31:6f:2a:d5:76:c3:1e:74:f7:73:2f:96:16:12:e0:d8.
Please contact your system administrator.
Add correct host key in /home/peter/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/peter/.ssh/known_hosts:24
  remove with: ssh-keygen -f "/home/peter/.ssh/known_hosts" -R 10.0.0.1
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
ash: uptime: not found

ඔබේ ධාරකයන් බොහෝ විට නැවත ස්ථාපනය කර නොමැති නම්, ඔබට -oUserKnownHostsFile=/dev/nullවිකල්පය සමඟ මෙය අඩු ආරක්ෂිත (නමුත් බොහෝ විට වෙනස් වන ධාරක යතුරු සඳහා වඩාත් පහසු) කළ හැකිය. මෙය ලැබුනු සියලුම සත්කාරක යතුරු බැහැර කරන බැවින් එය කිසි විටෙකත් අනතුරු ඇඟවීම ජනනය නොකරයි.


18.04 සමඟ, නව හැකියාවක් ඇත : StrictHostKeyChecking=accept-new. සිට man 5 ssh_config:

If this flag is set to accept-new then ssh will automatically
add new host keys to the user known hosts files, but will not
permit connections to hosts with changed host keys.  If this flag
is set to no or off”, ssh will automatically add new host keys
to the user known hosts files and allow connections to hosts with
changed hostkeys to proceed, subject to some restrictions.

12
සාදන ලද ආරක්ෂක මෙවලම් මඟ හරින බැවින් මෙය හොඳම විසඳුම නොවේ. ssh-keyscanඑය ඔබේ පද්ධතියේ තිබේ නම් වඩාත් සුදුසුය.
ස්ටෙෆාන් ලසිව්ස්කි

2
TeStefanLasiewski ඔබ විශ්වාස කළ නොහැකි ජාලයක සිටී නම් එය මිනිසාට මැද ප්‍රහාර එල්ල කිරීමට ඉඩ දෙයි. ස්ථාවර ධාරකයන් සඳහා නව යතුරු පිළිගැනීම සඳහා, ssh-keyscanප්‍රවේශය වඩාත් බුද්ධිමත් ය. ගතික / නැවත භාවිතා කරන ලද IP ලිපින සහිත විශ්වාසදායක ජාල වල දේශීය අථත්‍ය යන්ත්‍ර සහ වෙනත් ධාරකයන් සඳහා, විස්තර කර ඇති ප්‍රවේශය ප්‍රමාණවත්ය.
ලෙකන්ස්ටයින්

10
විසඳුම් දෙක අතර වෙනස පැහැදිලි කිරීම සඳහා: ssh-keyscanවිසඳුම සිදුවන්නේ එක් වරක් ssh-keyscanධාවනය වන මැද-මැද ප්‍රහාරයකට පමණි . මෙම -oStrictHostKeyChecking=noවිසඳුම සෑම අවස්ථාවකදීම මිනිසෙකු-in-the-මැද ප්රහාරය කොන්කරනු sshපවත්වා ගෙන ඇත.
එරික් ස්ජුලුන්ඩ්

129

ඔබගේ දන්නා_ හොස්ට් වෙත සේවාදායකයෙකු සඳහා ඇඟිලි සලකුණු එක් කිරීමට ඔබට පහත විධානය භාවිතා කළ හැකිය

ssh-keyscan -H <ip-address> >> ~/.ssh/known_hosts
ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

සටහන: ඔබට එකතු කිරීමට අවශ්‍ය සේවාදායකයේ IP සහ dns නම සමඟ <ip-address> සහ <hostname> ආදේශ කරන්න.

මෙහි ඇති එකම ගැටළුව නම් ඔබ දන්නා_හෝස්ට් වල සමහර සේවාදායකයන් සමඟ දෙවරක් අවසන් වීමයි. එය ඇත්ත වශයෙන්ම ලොකු දෙයක් නොවේ, සඳහන් කිරීම පමණි. අනුපිටපත් නොමැති බව සහතික කිරීම සඳහා, පහත සඳහන් පළමුව ධාවනය කිරීමෙන් ඔබට පළමුව සියලු සේවාදායකයන් ඉවත් කළ හැකිය:

ssh-keygen -R <ip-address>
ssh-keygen -R <hostname>

එබැවින් ඔබට ධාවනය කළ හැකිය:

for h in $SERVER_LIST; do
    ip=$(dig +search +short $h)
    ssh-keygen -R $h
    ssh-keygen -R $ip
    ssh-keyscan -H $ip >> ~/.ssh/known_hosts
    ssh-keyscan -H $h >> ~/.ssh/known_hosts
done

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


1
වර්ග කිරීම හරහා එය ධාවනය කිරීම | යුනික් සහ පසුව අමුතු භාවිතා කරමින් අනුපිටපත් ධාරකය සෙවීම ස්ක්‍රිප්ටයට වෙනස් කළ ධාරකයන් හඳුනා ගැනීමට සහ ඒවා ගැන පමණක් පරිශීලකයින්ට අනතුරු ඇඟවීමට හැකි වනු ඇත, විවිධ යතුරු ඇති එකම සත්කාරක සමාගමට කරදරයක් විය හැකි බැවින්
ලෙනාට් රෝලන්ඩ්

2
ඔබට -Hසත්කාරක නාම සහ ලිපින ඇතුළත් සටහනක් එක් කිරීමට අවශ්‍ය විය හැකිය .
ඩේවිඩ් කලන්

29

මෙම ප්‍රතිචාරය සමඟ මම ටිකක් ප්‍රමාදයි, නමුත් බුද්ධිමත් ක්‍රමය වනුයේ ඔබ අතිකාල රැස්වීම ක්‍රියාත්මක කිරීමට පෙර නව යන්ත්‍රයේ ssh-keycan එකක් කිරීමයි.

ssh-keyscan  <newhost> >> ~/.ssh/known_hosts

ඔබ පරිසරය මුළුමනින්ම පාලනය කරයි යැයි ඔබ සිතුවත්, පහසුව සඳහා සනීපාරක්ෂක පරීක්‍ෂණය අක්‍රීය කිරීම නරක සැලසුමක් සේ පෙනේ.


ඉහත විධානය ක්‍රියාත්මක කිරීම සහ ඔබ කලාපයෙන් ලබාගත් ඇඟිලි සලකුණු වලට එරෙහිව ධාරක යතුරු පරික්ෂා නොකිරීම හරියටම ඒ ආකාරයෙන්ම අවදානමට ලක් වේStrictHostKeyChecking no
code_monk

3
_code_monk: නැත, එසේ නොවේ. මම අසමත් වීම සඳහා එක් වරම අවස්ථාවක් විවෘත කරමි (වැරදි ධාරකයක යතුරක් දන්නා ධාරකයන්ට එකතු කිරීම). StrictHostKeyChecking no මඟින් වෙනත් යන්ත්‍ර සඳහා නැවත පිළිගැනීමට ඉඩ නොදේ.
ටින්ක්

1

මෙම ප්‍රවේශය ~/.ssh/configගොනුවට එක් කරන්න

Host *
    StrictHostKeyChecking no

ඒ සඳහා ප්‍රවේශවීමේ අවසරය ගැන පැමිණිලි කරන්නේ ~/.ssh/configනම්, උත්සාහ කරන්න

$ chmod 644 ~/.ssh/config

0

ස්වයංක්‍රීයව සේවාදායක ලැයිස්තුවක් එක් කිරීම සඳහා අපට පහත කළ හැකිය:

ගොනු සේවාදායක ලැයිස්තුවේ සේවාදායක IP එකතු කරන්න

IP පහත ආකෘතියෙන් එකතු කළ යුතුය.

නිමැවුම් cat servers-list

123.1.2.3
124.1.2.4
123.1.2.5

ඔබගේ අයිපී වෙනුවට ඉහත IP වෙනස් කරන්න.

පහත විධානය මඟින් ලැයිස්තුවෙන් සියලුම සේවාදායකයන් එක් කරනු ඇත.

ssh-keyscan -p61 -H "`cat servers-list`" >> ~/.ssh/known_hosts
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.