මැකෝස් සියෙරා නැවත පණගැන්වීම් අතර SSH යතුරු මතක ඇති බවක් නොපෙනේ


197

මැකෝස් වෙත යාවත්කාලීන කිරීමෙන් පසුව මට මෙම විධානය ක්‍රියාත්මක කළ යුතුය:

ssh-add -K

නැවත පණගැන්වීමෙන් පසු ගැටළුව නිවැරදි කරන නමුත් මම මගේ පරිගණකයට පිවිසෙන සෑම අවස්ථාවකම මෙම විධානය ක්‍රියාත්මක කළ යුතුය.

මම ඉහත විධානය ක්‍රියාත්මක නොකරන්නේ නම්, මගේ යතුරු ~/.sshමඟ හැරී ඇති අතර සම්බන්ධතාවය තහවුරු කිරීම සඳහා සේවාදායක මුරපදය මගෙන් අසනු ඇත.


1
$ ssh-add -Kමට ලබා දෙයිssh-add: illegal option -- K
මෝඩියස්

1
ඔබට පසුව පුද්ගලික යතුරු මාර්ගයට ඇතුළු වීමට අවශ්‍ය වනු ඇත -K. විසඳීම සඳහා ake ජේක්ගෝල්ඩ්ගේ පිළිතුර බලන්න.
බිෂර්බාස්

10.12.2 යාවත්කාලීනය මා සඳහා අනවශ්‍ය සේවාදායක මුරපද ඉල්ලීම් කිහිපයක් ඉවත් කළේය. ඔබට දැන් ssh-add -K ධාවනය කිරීමට අවශ්‍ය නොවනු ඇත.
ආගන්තුකය

Answers:


234

මැකෝස් සියෙරා 10.12.2 වන විට ඇපල් විසින් ssh_configවිකල්පයක් එකතු කරන UseKeychainලද අතර එමඟින් ගැටළුවට නිසි විසඳුමක් ලබා ගත හැකිය. ඔබගේ ~/.ssh/configගොනුවට පහත සඳහන් දෑ එක් කරන්න :

Host *
   AddKeysToAgent yes
   UseKeychain yes     

සිට ssh_config man10.12.2 පිටුවේ:

UseKeychain

මැකෝස් හි, විශේෂිත යතුරක් භාවිතා කිරීමට උත්සාහ කරන විට පද්ධතිය පරිශීලකයාගේ යතුරුපුවරුවේ මුරපද සෙවිය යුතුද යන්න නියම කරයි. මුරපදය පරිශීලකයා විසින් සපයන විට, මෙම විකල්පය මඟින් මුරපදය නිවැරදි බව තහවුරු කරගත් පසු යතුරු පුවරුව තුළ ගබඩා කළ යුතුද යන්න නියම කරයි. තර්කය 'ඔව්' හෝ 'නැත' විය යුතුය. පෙරනිමිය 'නැත'.


2
මෙම සබැඳියට අනුව: openradar.appspot.com/27348363 ඇපල් සමාගම "මෙම ප්‍රදේශයේ ප්‍රධාන ධාරාවේ OpenSSH සමඟ ඔවුන්ගේ හැසිරීම නැවත පෙළගස්වා ඇත".
තෝමස් ඩබ්ලිව්

17
බොහෝ සංවර්ධකයින් සඳහා ගැටළු ඇති කරන අයුරින් ඇපල් හැසිරීම වෙනස් කිරීම විකාරයකි (වෙනත් කිසිවක් නොමැති නම් GitHub තල්ලු කිරීම නිසා) සහ කිසිවෙකුට කිසිවක් නොකියා සිටීම!
mluisbrown

9
මම හිතන්නේ IdentityFile ~/.ssh/id_rsaඑය අතිරික්ත වන අතර අවශ්‍ය නොවේ (පෙරනිමි විකල්ප දෙස බලන විට). මම කිසි විටෙකත් මගේ ssh වින්‍යාස ගොනුවේ එම විකල්පය සකසා නැත.
therealmarv

9
Ake ජේක්ගෝල්ඩ් IMO වෙනස් ~/.ssh/config~කිරීම වඩාත් සුදුසු වන්නේ එය sshමට්ටමේ ගැටලුව විසඳන බැවිනි. .bash_profileෂෙල් භාවිතා නොකර ssh භාවිතා කරන GUI සේවාදායකයින් සඳහා මෝඩ් වැඩ කරන බව 100% ක් විශ්වාස නැත .
mluisbrown

7
එම වෙනස සම්බන්ධයෙන් ඇපල් විසින් තාක්ෂණික සටහන TN2449 ප්‍රකාශයට පත් කරන ලදී .
කෙන්ට්සෝ

111

Capistrano භාවිතා කර යම් කේතයක් යෙදවීමට උත්සාහ කරන විට මටද මෙම ගැටළුව තිබුණි . හරිම කලකිරීමක්. මෙම ගැටළුව සමඟ කටයුතු කිරීමට මා දන්නා ක්‍රම දෙකක් මෙන්න.

ක්රමය 1: දන්නා සියලු යතුරු SSH නියෝජිතයාට එක් කරන්න .

එබැවින් මා සොයාගත් එක් විසඳුමක් නම්, ඔබේ යතුරුපුවරුවේ ගබඩා කර ඇති ඕනෑම මුරපදයක් භාවිතා කරමින් SSH නියෝජිතයාට දන්නා සියලු අනන්‍යතා එකතු ssh-addකරන -Aවිකල්පය සමඟ ධාවනය කිරීමයි :

ssh-add -A

දැන් මෙය ක්‍රියාත්මක වන නමුත් එය නැවත පණගැන්වීම් හරහා නොපවතිනු ඇත. එබැවින් ඔබට නැවත කිසිදිනක මේ ගැන කරදර වීමට අවශ්‍ය නැතිනම්, ඔබේ පරිශීලකයාගේ ~/.bash_profileගොනුව මේ ආකාරයට විවෘත කරන්න :

nano ~/.bash_profile

මෙම පේළිය පහළට එක් කරන්න:

ssh-add -A 2>/dev/null;

දැන් ඔබ නව පර්යන්ත කවුළුවක් විවෘත කරන විට, සියල්ල හොඳ විය යුතුය!

ක්‍රමය 2: යතුරුපුවරුවේ ඇති SSH යතුරු පමණක් නියෝජිතයාට එක් කරන්න.

එබැවින් ssh-add -Aවිකල්පය බොහෝ මූලික අවස්ථාවන් සඳහා ක්‍රියා කළ යුතු අතර, මෑතකදී මා හට ගැටළුවක් ඇතිවිය. එහිදී මා සතුව 6-7 වැග්‍රන්ට් පෙට්ටි (ප්‍රවේශය සඳහා SSH යතුරු / අනන්‍යතා භාවිතා කරයි) යන්ත්‍රයක් මත වඩාත් සුලභ id_rsa.pubතැනක ඉහළින් සැකසීමක් තිබුණි.

දීර් story කතන්දර කෙටියෙන්, SSH යතුරු / අනන්‍යතා මත පදනම් වූ බොහෝ අසාර්ථක උත්සාහයන් හේතුවෙන් මම දුරස්ථ සේවාදායකයකින් අගුළු දමා අවසන් වූ බැවින් සේවාදායක ප්‍රවේශය මුරපදයක් මත පදනම් වූ අතර SSH යතුරු / අනන්‍යතා SSH යතුරු / අනන්‍යතා වේ. එබැවින් SSH නියෝජිතයා මගේ සියලුම SSH යතුරු උත්සාහ කර අසාර්ථක වූ අතර මට මුරපද විමසුමට පවා යාමට නොහැකි විය.

ගැටළුව වන්නේ ssh-add -Aඔබට අවශ්‍ය සෑම SSH යතුරක් / අනන්‍යතාවයක්ම අත්තනෝමතික ලෙස නියෝජිතයාට එකතු කිරීමයි. වැග්‍රන්ට් පෙට්ටි වැනි.

බොහෝ පරීක්ෂණයෙන් පසු මගේ විසඳුම පහත පරිදි වේ.

පළමුවෙන්ම, ඔබට අවශ්‍ය ප්‍රමාණයට වඩා SSH යතුරු / අනන්‍යතා ඔබේ නියෝජිතයාට එකතු කර ඇත්නම් shown පෙන්වා ඇති පරිදි ssh-add -lඒවා සියල්ලම ඒජන්තවරයාගෙන් ඉවත් කරන්න:

ssh-add -D

එය සිදු කිරීමෙන් පසු, පසුබිම් ක්‍රියාවලියක් ලෙස SSH නියෝජිතයා ආරම්භ කරන්න:

eval "$(ssh-agent -s)"

දැන්, එය අමුතු දෙයක් වන අතර ඒ මන්දැයි මට විශ්වාස නැත. සමහර අවස්ථාවලදී ඔබට ~/.ssh/id_rsaනියෝජිතයාට යතුර / අනන්‍යතාවය විශේෂයෙන් එකතු කළ හැකිය :

ssh-add ~/.ssh/id_rsa

ඔබගේ මුරපදය ටයිප් කරන්න, පහර දෙන්න Return, ඔබ යාමට හොඳ විය යුතුය.

නමුත් වෙනත් අවස්ථාවලදී මෙය ක්‍රියාත්මක කිරීම යතුර / අනන්‍යතාවය එක් කිරීමට ප්‍රමාණවත් වේ:

ssh-add -K

ඒ සියල්ල ක්‍රියාත්මක නම්, ටයිප් කරන්න ssh-add -l, ඔබ ලැයිස්තුගත කර ඇති එක් SSH යතුරක් / අනන්‍යතාවයක් දැකිය යුතුය.

ඔක්කොම හොඳයිද? දැන් ඔබේ .bash_profile:

nano ~/.bash_profile

මෙම රේඛාව පහළට එක් කරන්න; -Aඔබට එය තිබේ නම් අනුවාදය අදහස් දක්වන්න හෝ ඉවත් කරන්න :

ssh-add -K 2>/dev/null;

එමඟින් එක් එක් ආරම්භක / නැවත පණගැන්වීමේදී SSH යතුර / අනන්‍යතාවය SSH නියෝජිතයාට නැවත පූරණය කිරීමට ඉඩ ලබා දේ.

යාවත්කාලීන කිරීම: ඇපල් දැන් UseKeychainවිවෘත SSH වින්‍යාස විකල්ප සඳහා විකල්පයක් එක් කර ඇති ssh-add -Aඅතර විසඳුමක් ද සලකා බලයි .

මැකෝස් සියෙරා 10.12.2 වන විට ඇපල් විසින්UseKeychain SSH වින්‍යාසයන් සඳහා වින්‍යාස විකල්පයක් එකතු කර ඇත . මෑන් පිටුව පරීක්ෂා කිරීම (හරහා man ssh_config) පහත තොරතුරු පෙන්වයි:

UseKeychain
        On macOS, specifies whether the system should search for
        passphrases in the user's keychain when attempting to use a par-
        ticular key. When the passphrase is provided by the user, this
        option also specifies whether the passphrase should be stored
        into the keychain once it has been verified to be correct.  The
        argument must be ``yes'' or ``no''.  The default is ``no''.

මෙම විවෘත රේඩාර් ටිකට් පතේ විස්තර කර ඇති පරිදිssh-add -A ඔබේ එකතු කිරීම හෝ එක් පරිශීලකයෙකුගේ විකල්පයන්ගෙන් එකක් ලෙස එකතු කිරීම වැනි විසඳුම ඇපල් වෙත දැකගත හැකිය ..bash_profile UseKeychain~/.ssh/config


4
@modius: ඔබට pw ආරක්ෂිත යතුරක් තිබේ නම්, ssh-add -K [path to key]විමසූ විට pw ඇතුළු කරන්න . යතුරුපුවරුව මුරපදය ගබඩා කරන අතර ssh-add එය එතැන් සිට ලබා ගනී.
ටිමෝ

4
-A යනු ඔබේ යතුරුපුවරුවේ ගබඩා කර ඇති මුරපද භාවිතා කරමින් නියෝජිතයාට අනන්‍යතා එක් කිරීම සඳහා බව සලකන්න. ඔබට අතිරේකව මුරපද නොමැතිව අනන්‍යතා තිබේ නම්, ඒවා ඔබේ නියෝජිතයාට එක් කිරීමට -A විකල්පය මඟ හැරිය යුතුය.
ඉවාන් පොන්

12
හුදෙක් මේ සඳහා තව ටිකක් සැඟවීම් එකතු කිරීමට, ඇපල් ඇතුළත් කිරීමට ssh_config සඳහා man පිටුව යාවත්කාලීන කර UseKeychainසහ AddKeysToAgentස්වයංක්රීයව ඔබගේ ssh_config ඔබේ යතුරු එකතු කරන්න. ෂෙල් ස්ක්‍රිප්ටින් අවශ්‍ය නොවේ. 10.12.2 සඳහා යාවත්කාලීන තොරතුරු සඳහා පහත @mluisbrown පිළිතුර බලන්න
රයන් ගිබන්ස්

1
Ake ජේක්ගෝල්ඩ් ඔබ කියන දේ මට ලැබෙනවා, මම ඇත්තටම ඔවුන් කරන දේට කැමතියි. යතුරුපුවරුව වෙත මුරපදය ස්වයංක්‍රීයව සුරකිමින් එය ආරම්භයේදී පටවනවා වෙනුවට, ඔවුන් ඔබට ඔබේ ආරක්ෂාව පාලනය කරයි. / shrug
රයන් ගිබන්ස්

1
@RyanGibbons FWIW, OpenRadar හි මෙම පිළිතුරෙහි ඇපල් සංවර්ධක සබඳතාවල නිල යෝජනාව දෙස බලන්න : ssh-add -Aඔබේ යතුරු නිතරම පටවා ගැනීමට අවශ්‍ය නම් ඔබේ rc ස්ක්‍රිප්ටයේ ධාවනය කිරීමෙන් ඔබට මෙය පහසුවෙන් නිවැරදි කළ හැකිය .” ¯\_(ツ)_/¯
ජේක්ගෝල්ඩ්

18

ලෙස පැහැදිලි මෙතන , මේ වසරේ සිට නිර්දේශිත ක්රමය වන්නේ macOS 10.12.2 :

  1. ඔබගේ ~/.ssh/configගොනුවට පහත පේළි එක් කරන්න :

    Host *
        UseKeychain yes
        AddKeysToAgent yes
  2. විධානය භාවිතා කරමින් ඔබ ssh-agent වෙත එකතු කරන ඕනෑම යතුරක් ssh-add /path/to/your/private/key/id_rsaයතුරුපුවරුවට ස්වයංක්‍රීයව එකතු වන අතර නැවත පණගැන්වීමේදී ස්වයංක්‍රීයව පටවනු ලැබේ.


මම මෙම පිළිතුර එක් කරන්නේ:

  • වෙනත් පිළිතුරු මඟින් IdentityFile ~/.ssh/id_rsaපේළිය එක් කිරීමට ඔබට කියනු ඇත , නමුත් යතුරු ස්වයංක්‍රීයව පැටවීම සඳහා එම විකල්පය අවශ්‍ය නොවේ (තවද එය ඇත්ත වශයෙන්ම ඔබ එය එකතු කරන ධාරක කොටස සඳහා එම විශේෂිත යතුර බැඳ තබයි, ඔබ විවිධ යතුරු භාවිතා කරන්නේ නම් ඔබට අවශ්‍ය නොවනු ඇත විවිධ උණුසුම්).
  • පිළිගත් පිළිතුරෙහි සඳහන් වේ UseKeychain, නමුත් ssh-agentනැවත පණගැන්වීමෙන් පසුව යතුරු දිගටම පවත්වා ගැනීමට එය ප්‍රමාණවත් නොවේ .

2
දෙවන කරුණ සම්බන්ධයෙන්. ඔබට කෙතරම් විශ්වාසද? නැවත පණගැන්වීමේදී කිසිවක් සත්‍ය වශයෙන්ම සිදු නොවන අතර එය ඔබගේ යොමු තොරතුරු වලද සඳහන් නොවේ. ඉහත වින්‍යාසය සමඟ සිදුවන්නේ ඔබේ SSH සේවාදායකයා පළමු සම්බන්ධතාවය මත යතුර නියෝජිතයා වෙත පටවනු ඇත (තවද එය යතුරුපුවරුවෙන් මුරපදය ලබා ගනී), එවිට යතුර පටවනු ලැබේ. නැවත පණගැන්වූ වහාම යතුරු ලැයිස්තුගත කිරීමෙන් ඔබට මෙම ප්‍රකාශය සත්‍යාපනය කළ හැකි ssh-add -Lඅතර එය වාර්තා The agent has no identitiesකරයි. ඔබ සම්බන්ධ වන තුරු කිසිවක් එහි නොමැත. මෙම AddKeysToAgentකිසිදු ආකාරයකින් මඟින් නැවත ආරම්භ අතර යතුරු දිගටම නැහැ!
ඩැනිලා වර්ෂිනින්

16

ඔබට උදව් විය හැකි මෙම මාතෘකාව ගැන මම කෙටි ලිපියක් ලියා ඇත .

විසඳුමක් වන්නේ ssh-add -Aසෑම ආරම්භයකදීම විධානය ඇමතීමයි.

යන්තම් එකතු .plistපහත සඳහන් අන්තර්ගත සහිත ගොනුව මාර්ගය ~/Library/LaunchAgents/හෝ එකක් නිර්මාණය Lingon යෙදුම:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>ssh-add-a</string>
    <key>ProgramArguments</key>
    <array>
        <string>ssh-add</string>
        <string>-A</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

<!-- @@@@LingonWhatStart:ssh-add -A@@@@LingonWhatEnd -->

8

මැකෝස් 10.12.2 සිට ඔබට UseKeychainවිකල්පය භාවිතා කළ හැකිය. වැඩි විස්තර මෙතැනින් කියවන්න හෝ සොයා බලන්න man ssh_config.

     UseKeychain
         On macOS, specifies whether the system should search for passphrases in the user's keychain
         when attempting to use a particular key. When the passphrase is provided by the user, this
         option also specifies whether the passphrase should be stored into the keychain once it has
         been verified to be correct.  The argument must be ``yes'' or ``no''.  The default is ``no''.

එබැවින් පහත සඳහන් දේ කරන්න:

echo "UseKeychain yes" >> ~/.ssh/config


1
>>ඔබ විධානය කිහිප වතාවක් ඇතුළත් කළහොත් භාවිතා කිරීම අවදානමට ලක් වේ. Mluisbrown පිළිතුර හෝ ChrisJF පිළිතුර විස්තර කර ඇති පරිදි ගොනුවේ අත්පොත සංස්කරණය කිරීම වඩා හොඳය .
කෝර්

ඔබ එතනමයි :-)
බෙන්

4

ssh-add -Kමට " නීති විරෝධී විකල්පය - කේ " ලබා දුන් බව මට පෙනී ගියේය. මෙයට හේතුව ssh-add යනු / usr / local / bin වෙතින් එන අමුතු අනුවාදයකි (බීර මගින් ස්ථාපනය කර තිබේද?). / Usr / bin හි පිහිටා ඇති ssh-add විශේෂිත භාවිතයෙන් මට යතුර එක් කිරීමට හැකි විය:

/usr/bin/ssh-add -K ~/.ssh/id_rsa

අවුරුදු ගණනාවක් තිස්සේ පහසුවෙන් වැඩ කිරීමට අපොහොසත් වීමෙන් පසු මෙය මට ප්‍රයෝජනවත් විය.
nyxee

4

මට මීට පෙර මෙම ගැටලුව ඇති අතර මෙය මඟ හැරීමට ක්‍රමයක් මම සොයාගෙන ඇත. මම configමගේ ~/.sshෆෝල්ඩරයේ නම් කරන ලද ගොනුවක් නිර්මාණය කළෙමි , එහිදී මම පහත පේළි එකතු කළෙමි:

Host github.com
HostName github.com
IdentityFile ~/.ssh/github
IdentitiesOnly yes

මම දන්නේ නැති, නමුත් Hostසහ HostNameයන දෙකම වැදගත් වේ. මගේ නඩුවේ ඔවුන්ගෙන් එක් අයෙකු නොසිටියේ නම් විසඳුම ක්‍රියාත්මක වූයේ නැත.

පසුව, මම එය කළ අතර ssh-add -Kඑය නැවත ආරම්භ කිරීමෙන් පසුව පවා ක්‍රියාත්මක විය.


1
ධාරකය යනු විශේෂිත සේවාදායකයක් සඳහා ඔබේ පරිශීලක අර්ථ දක්වන නම / අන්වර්ථය වන අතර එක් සේවාදායකයකට ඇතුළත් කිරීම් වෙන්කර දක්වයි: ශෛලීයමය වශයෙන් සත්කාරක ප්‍රවේශය අනුගමනය කරන රේඛා ඇතුල් කිරීම සතුටක්. සත්කාරක නාමයෙන් දැක්වෙන්නේ සේවාදායකයාගේ ජාල ලිපිනය වන github.com වැනි නමකි, නමුත් ඔබට IP ලිපිනයක් ද භාවිතා කළ හැකිය. ධාරක සහ සත්කාරක නාම එකම දෙයක් විය යුතු නැත, නමුත් ඔව්, ඒවා දෙකම ssh වින්‍යාස ආකෘතියට අත්‍යවශ්‍ය වේ.
මාර්ක් ෆොක්ස්

4

ඔබ වෙනත් ssh අනුවාදයක් භාවිතා කරන්නේ නම් (උදා: හෝම්බ rew හරහා ස්ථාපනය කර ඇත) ඉහත විසඳුම් කොටුවෙන් පිටත ක්‍රියා නොකරනු ඇත. උදාහරණයක් වශයෙන්, AddKeysToAgent yesහා UseKeychain yesතුළ .ssh/configගොනු නොවන ඇපල් ssh සංස්කරණ විසින් පිළිගත් නොමැත හා දෝෂයක් හේතු වනු ඇත. සේවාදායකයා සඳහා -Aහෝ -Kවිකල්පය සඳහා සමාන වේ ssh.

ඒ කියන්නේ lmluisbrown ගේ පිළිතුර කිසිසේත් ක්‍රියාත්මක නොවනු ඇත. ඔබට ake ජේක්ගෝල්ඩ්ගේ පිළිතුරේ 1 වන ක්‍රමය භාවිතා කළ හැකි අතර යතුරුපුවරුවට සියලු යතුරු එක් කිරීමට ssh-addඔබේ මැකෝස් උපයෝගීතාව පැහැදිලිව භාවිතා කළ හැකිය .bash_profile, එනම්:

/usr/bin/ssh-add -A

ඉහත සටහනකින් සඳහන් කළ පරිදි , ඔබට පළමුව යතුරු පුවරුවට යතුරක් එක් කිරීමට සිදුවනු ඇත: උදා/usr/bin/ssh-add -K .ssh/github


2

සියලුම පුනරාවර්තන බියකරු සිහිනය නැවැත්වීමට සියලුම සත්කාරක සමාගම් සඳහා UseKeyChain එක් කිරීමට ~ / .ssh / config සංශෝධනය කිරීම ප්‍රමාණවත් වේ;)

Host *
 UseKeychain yes

ගොනුව හිස් නම් හෝ නොපවතින නම් සරල නිර්මාණය සහ / හෝ ඉහත වින්‍යාසය එක් කරන්න.


1

මම මැක් ඕඑස් එක්ස් සියෙරා (10.12.6) වෙත යාවත්කාලීන කළෙමි. මට වෙනත් ධාරකයන් වෙතට යා හැකි නමුත් github.com වෙත නොවේ.

මට ~ / .ssh / config තුළට ඇතුළත් කිරීමට සිදු වූයේ මෙයයි:

PubkeyAcceptedKeyTypes ssh-dss,ssh-rsa

එම වෙනසෙන් පසුව, මට පෙර මෙන් ගිතුබ් භාවිතා කළ හැකිය.

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.