මම බිට්බකට් වෙත තල්ලු කරන සෑම අවස්ථාවකම මුරපදය ඇසීම වළක්වා ගන්නේ කෙසේද


239

මෙම මාර්ගෝපදේශයේ උපකාරයෙන් මම මගේ ssh දේවල් සකස් කළ අතර එය හොඳින් ක්‍රියාත්මක විය ( hg pushමුරපදයක් ඉල්ලීමකින් තොරව මට ධාවනය කළ හැකිය ). මම තවමත් එකම නිවාස නාමාවලිය භාවිතා කරන බව සලකන විට, එතැන් සිට අද දක්වා කුමක් සිදුවිය හැකිද?

$ cat .hg/hgrc 
[paths]
default = ssh://hg@bitbucket.org/tshepang/bloog

$ hg push
Enter passphrase for key '/home/wena/.ssh/id_rsa': 
pushing to ssh://hg@bitbucket.org/tshepang/bloog
searching for changes
...

Answers:


365

ඔබ ssh නියෝජිතයෙකු භාවිතා කළ යුතුය. කෙටි පිළිතුර: උත්සාහ කරන්න

$ ssh-add

තල්ලු කිරීමට පෙර. ඔබගේ මුරපදය විමසූ විට සපයන්න.

ඔබ දැනටමත් ssh නියෝජිතයෙකු ධාවනය නොකරන්නේ නම් ඔබට පහත පණිවිඩය ලැබෙනු ඇත:

Could not open a connection to your authentication agent.

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

eval $(ssh-agent)

ඉන්පසු ssh-addවිධානය නැවත කරන්න .

Ssh නියෝජිත අත්පොත දෙස බැලීම වටී .


3
evalඔබට ටයිප් කළ හැකි කාරණය ssh-agentකුමක්ද?
ජේම්ස්

5
එය ඔබට එය භාවිතා කිරීමට ඉඩ දෙන සමහර විධාන පෙන්වන අතර ඒවා ඔබ වෙනුවෙන් ක්‍රියාත්මක නොකරයි; evalඋද්දීපනය කරයි.
tshepang

මුල් ප්‍රශ්නයට සම්බන්ධ නැති නමුත් ඔබ මෙම ගැටළු GitHub, Bitbucket යනාදියෙහි දිගටම තබා ගන්නේ නම්, ඔබ භාවිතා කරන්නේ git / ssh URL මිස http නොව, පරිශීලක නාමය + මුරපදය ඉල්ලමින් සිටින බවට වග බලා ගන්න.
චෙක් විද්‍යාව

ඔබට පෙරනිමි යතුරක් නොමැති නම්, හෝ ගුණක එකතු කිරීමට අවශ්‍ය නම්,ssh-add /path/to/key
hoosierEE

48

මෙය විසඳීමට ක්‍රමයක් වන්නේ ssh-agentසහ ssh-add:

$ exec ssh-agent bash
$ ssh-add
Enter passphrase for ~/.ssh/id_rsa: 

මෙයින් පසු මුරපදය වත්මන් සැසිය සඳහා සුරකින ලදි. නැවත විමසනු නොලැබේ.


9
බොහෝ අය ඔවුන්ගේ පාස් වාක්‍ය සඳහා කිසිසේත් දෝෂාරෝපණය වීමට කැමති නැත.
Connexo

29

Ssh යතුරු කළමනාකරණය සඳහා මම Keychain භාවිතා කරමි . එය ඩේබියන් භාෂාවෙන් ද උබුන්ටු සමඟ ද ලබා ගත හැකිය

apt-get install keychain

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


2
//, මෙය මට වැඩ කළා. මම ටර්මිනලයක් විවෘත කරන සෑම අවස්ථාවකම මගේ ssh යතුරු මුරපදය ඇතුළත් කිරීමට අවශ්‍ය නොවන බැවින් එය ssh-agent ට වඩා හොඳය .
නේතන් බසානිස්

Ather නාතන් බාසේන් ඔබ කියන්නේ යතුරුපුවරුව භාවිතා කරමින් ඔබ ටර්මිනලයක් විවෘත කරන සෑම අවස්ථාවකම ssh යතුරු මුරපදය ඇතුළත් කළ යුතු නැති බවයි? ඔබ එය වින්‍යාස කරන්නේ කෙසේද? මම ටර්මිනලය විවෘත කරන සෑම අවස්ථාවකම යතුරුපුවරුව මුරපදය ඉල්ලා සිටින නිසා, ආරම්භ කිරීමෙන් පසුව මම එය විවෘත කළ පළමු අවස්ථාව පමණි, නමුත් තවමත්. මට සෑම විටම මුරපදය ඇතුළත් කිරීමට අවශ්‍ය නැත.
m4l490n

key m4l490n නැත, ඔබ යතුරුපුවරුව භාවිතා කරන්නේ නම්, ඔබ ටර්මිනලයක් විවෘත කරන සෑම අවස්ථාවකම ssh යතුරු මුරපදය ඇතුළත් කිරීමට අවශ්‍ය නොවිය යුතුය. නමුත් ආරම්භ කිරීමෙන් පසු ඔබ එය එක් වරක් ඇතුළත් කළ යුතුය. මුරපදය තැටියට සුරකිනු නොලැබේ - එය අනාරක්ෂිත වේ.
ෆහීම් මිත

1
මා සඳහා, එය මා පිවිසෙන සෑම අවස්ථාවකම අසයි (දුරස්ථ සේවාදායකයක මට git repository + ssh යතුරු ඇති අතර මම "git pull" කරන සෑම අවස්ථාවකම මට මුරපදය ඇතුළත් කළ යුතුය)
මාටින් තෝමා

Ar මාටින් තෝමා එය වැරදියි. ඔබ .ssh නිවැරදිව වින්‍යාස කර ඇත්දැයි පරීක්ෂා කරන්න. විශේෂයෙන්, ඔබේ කවචය නිවැරදිව වින්‍යාස කර තිබේද? එය තවමත් ඔබ වෙනුවෙන් වැඩ නොකරන්නේ නම් සහ ඔබට එය හදුනාගත නොහැකි නම්, ඔබට ප්‍රශ්නයක් ඇසිය හැකිය.
ෆහීම් මිත

20

පහත දැක්වෙන ~ / .ssh / config ගොනුව සාදන්න (හෝ එය තිබේ නම් සංස්කරණය කරන්න):

Host *
    UseKeychain yes
    AddKeysToAgent yes
    IdentityFile ~/.ssh/id_rsa

නමුත් මම සෑම සේවාවක් සඳහාම වෙනස් යතුරු යුගලයක් භාවිතා කරමි ...
Connexo

@connexo ඔබට ආදේශක තරු ලකුණු ඔබේ තනි සත්කාරක නාමයෙන් සහ 'id_rsa' ඔබේ පුද්ගලික යතුර සමඟ ආදේශ කළ හැකිය
ness-EE

2
මට IgnoreUnknown AddKeysToAgent,UseKeychainඉහළින් එකතු කිරීමට අවශ්‍ය විය UseKeychain yes.
සලකා බලන්න අනුපාතය

2
මට මෙම දෝෂය ලැබෙමින් පවතී: "නරක වින්‍යාස විකල්පය: usekeychain" "UseKeychain yes" පේළියේ.
m4l490n

1
සලකා බලන අනුපාතයේ අදහස් දැක්වීමට අමතරව එය ක්‍රියා කරයි. option m4l490n ඔබට එම විකල්පය සමඟද උත්සාහ කළ හැකිය, විකල්පයක් නොමැතිව මට එකම දෝෂ පණිවිඩයක් තිබුණි.
рüффп

6

පහසුව සඳහා, ප්‍රශස්ත ක්‍රමය යනු jmtd සහ Faheem හි පිළිතුරු වල එකතුවකි .

ssh-agentතනිවම භාවිතා කිරීම යනු ssh-agentඔබ විවෘත කරන සෑම නව පර්යන්තයක් සඳහාම නව අවස්ථාවක් නිර්මාණය කළ යුතු බවයි. keychainආරම්භ කළ විට පුද්ගලික යතුර (ය) සඳහා මුරපදය ඉල්ලා එය ගබඩා කරයි. ඒ ආකාරයෙන් ඔබගේ පුද්ගලික යතුර මුරපදයෙන් ආරක්‍ෂිත නමුත් ඔබට ඔබේ මුරපදය නැවත නැවතත් ඇතුළත් කිරීමට අවශ්‍ය නොවේ.

මෙම ආරුක්කුව විකි සිට යතුරු කැරැල්ලේ ආරම්භනය නිර්දේශ /etc/profile.d/වැනි, හෝ ඔබේ ෂෙල් පැතිකඩ .bash_profileහෝ .bashrc. මෙය අවාසි ඇති අතර එය ඔබ ටර්මිනලයක් විවෘත කළ විගසම ඔබේ යතුරු පුවරුව සම්බන්ධ කරයි.

වඩාත් නම්‍යශීලී ප්‍රවේශයක් වන්නේ keychainනිශ්චිත tmuxසැසියක් සමඟ ඒකාබද්ධ කිරීමයි . ඉතින්, දී .bash_profile:

tsess=$(tmux ls 2>&1)

if [[ "${tsess%%:*}" = "secured" ]] && 
   [[ -f $HOME/.keychain/$HOSTNAME-sh ]]; then
    # start keychain
    /usr/bin/keychain -Q -q --nogui ~/.ssh/id_rsa
    . $HOME/.keychain/$HOSTNAME-sh
fi

... ඉන්පසු එය ආරක්ෂිත tmuxසැසිය ආරම්භ කිරීම සහ අවශ්‍ය විටෙක (යතුරුපුවරුවකින් දියත් කිරීම) පමණි:

#!/bin/bash
PID=$(pgrep tmux)
new="tmux -f $HOME/.tmux/conf new -s secured"
old="tmux attach -t secured -d"

if [[ -z "$SSH_AUTH_SOCK" ]]; then
    eval `ssh-agent`
    trap "kill $SSH_AGENT_PID" 0
fi

if [[ -z "$PID" ]]; then
    urxvtc -title "SSH" -e sh -c "${new}"
else
    urxvtc -title "SSH" -e sh -c "${old}"
fi

ssh-add

දැන්, ඔබේ යතුරු පුවරුව ආරම්භ වන්නේ ඔබ එම නිශ්චිත tmuxසැසිය ආරම්භ කරන විට එක් වරක් පමණි . එම සැසිය පවතින තාක් කල්, ඔබට එම sshයතුරු වෙත පිවිස ඔබගේ දුරස්ථ ගබඩාවලට තල්ලු කළ හැකිය.


දුරස්ථ යන්ත්‍රයක වැඩ කිරීමට මෙය ලබා ගන්නේ කෙසේද? Script SSH_CLIENT සඳහා පරීක්ෂා කිරීම සඳහා මම දෙවන ස්ක්‍රිප්ට් වෙනස් කළ අතර එය පවතී නම් urxvtc ක්‍රියාත්මක නොකරන්න, tmux පමණි. එය ක්‍රියාත්මක වේ, නමුත් ගැටළුව වන්නේ .bash_profile කොටසයි. මම ප්‍රථම කොටුවට පිවිසෙන විට එය පවසන්නේ "සේවාදායකය හමු නොවීය: සම්බන්ධතාවය ප්‍රතික්ෂේප කරන ලදි" එය "tmux ls" හි ප්‍රතිදානයයි. ඉන්පසුව, මම දෙවන ස්ක්‍රිප්ට් ක්‍රියාත්මක කරන විට, tmux එක්කෝ නව සැසියක් ආරම්භ කරයි හෝ පවතින එකකට අනුයුක්ත කරයි, නමුත් යතුරුපුවරු විමසුමක් නොමැත. පසුව, මම සැසිවාරයෙන් පිටවන විට, යතුරුපුවරු විමසුම එහි රැඳී සිටී.
ජේ.සී. යමෝකොස්කි

සැසියක් නොමැති නම් tmux ප්‍රතිදානය නිහ to කිරීමට මම පිළිතුර යාවත්කාලීන කර ඇත.
jasonwryan

ස්තූතියි, නමුත් එය තවමත් යතුරුපුවරුව සමඟ ගැටලුව විසඳුවේ නැත. tmux නව සැසිය නිර්මාණය කරන නමුත් ඕනෑම හිස් විමසුමක් වෙත කෙලින්ම යයි. මම tmux සැසියෙන් පිටවන විට පමණක් මගේ මුරපදය ඉල්ලා සිටින යතුරුපුවරු විමසුම මට පෙනේ.
ජේ.සී. යමෝකොස්කි

යතුරුපුවරුව ක්‍රියාත්මක වන්නේ .bash_profile තුළ පමණක් බැවින් මම යතුරුපුවරුව පැවසීම නතර කළ යුතු යැයි මම සිතමි. ගැටළුව වන්නේ ssh-add ක්‍රියාත්මක කිරීමෙනි. කෙසේ වෙතත්, මම tmux සැසිය නිර්මාණය කිරීමෙන් පසු ssh-add අතින් ධාවනය කළහොත් එය ක්‍රියාත්මක වේ.
ජේ.සී. යමකොස්කි

1
දෙවන ස්ක්‍රිප්ට් එක මඟ හැර ඔබගේ ආරක්ෂිත tmux සැසිය ආරම්භ කරන්න .profile- එවිට ඔබ පිවිසුණු විගස යතුරු සඳහා විමසුමක් ලැබෙනු ඇත.
jasonwryan

0

ඔබට භාවිතා කළ හැකිය sshpass:

$ sudo apt-get install sshpass
$ sshpass -p 'password' ssh username@server

sshpass -p yourpassphraseඔබගේ සුපුරුදු sshවිධානය එකතු කිරීමට පෙර ඔබ එකතු කළ යුතුය .


2
ඒක හරියට මෝඩ අදහසක් වගේ. එය ඔබගේ මුරපදය ඔබගේ කවච ඉතිහාසයේ පැහැදිලි පා text යකින් පෙන්වන්නේ නැද්ද?
Connexo

හරියටම, නමුත් ඔබ ඔබේ සැසිය මුරපදයකින් ආරක්ෂා කළ යුතු නොවේද?
බෙල්කා

1
ඔබ එසේ කළත්, ඔබ අසල සගයකු වාඩි වී ඔබට උදව් කිරීමට / ඔබෙන් ඉගෙන ගැනීමට කොපමණ වාරයක් තිබේද?
Connexo

යමෙක් ඔබේ ලැප්ටොප් / තැටිය සොරකම් කර ඔබගේ මුරපදය .bash_history වෙතින් ඉගෙන ගත හැකිය.
දිමිත්‍රි ෆෙඩෝර්කොව්
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.