рд╕реНрд░реЛрдд рд╕реЗ ssh рдкрд░ рдорд░реНрдХреНрдпреВрд░рд┐рдпрд▓-рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛

Ssh рдкрд░ рдорд░реНрдХреНрдпреВрд░рд┐рдпрд▓-рд╕рд░реНрд╡рд░ рдХреА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╕реНрдерд╛рдкрдирд╛, рд╢реВрдиреНрдп рд╕реЗ 100% рддрдХред


рдореИрдВ рд▓рдЧрд╛рддрд╛рд░ aivus рд╡рд┐рд╖рдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИред

I

рдЯреНрд░реЗрдирд┐рдВрдЧ


рдЦреБрдж рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ


рд╕реНрдерд╛рдкрдирд╛


рд╕реНрд░реЛрдд рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
wget http://dev.lshift.net/paul/mercurial-server/mercurial-server_1.3.tar.gz tar -xf mercurial-server_1.3.tar.gz cd mercurial-server-1.3 

рдорд░реНрдХреНрдпреВрд░рд┐рдпрд▓-рд╕рд░реНрд╡рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
 python setup.py build python setup.py install 

рдореИрдВ рд╕рднреА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдПрдХ рд╕реНрдерд╛рди рдкрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВред
 cp scripts*/* /var/lib/mercurial-server/ 

Sshd рд╕реЗрдЯрдЕрдк


рд╣рдореЗрдВ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдХреБрдВрдЬреА рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЛ рд╕рдХреНрд░рд┐рдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
 nano /etc/ssh/sshd_config 

рдЕрд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдпрд╛ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ
 RSAAuthentication yes PubkeyAuthentication yes 

рд╣рдо рдПрдХ рдПрдХрд▓ рдХреБрдВрдЬреА рд╕рдВрдЧреНрд░рд╣рдг рдХреЗрдВрджреНрд░ рднреА рдмрдирд╛рдПрдВрдЧреЗ
 AuthorizedKeysFile /etc/ssh/keys/%u.pub 
 mkdir /etc/ssh/keys 

Sshd рдореЗрдВ рдореБрдЦреНрдп рдЕрдиреБрд╡рд╛рдж


рдорд░реНрдХреНрдпреВрд░рд┐рдпрд▓-рд╕рд░реНрд╡рд░ рдХреА рд╕рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреБрдВрдЬрд┐рдпрд╛рдБ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ
/ etc / рдорд░реНрдХреНрдпреВрд░рд┐рдпрд▓-рд╕рд░реНрд╡рд░ / рдХреБрдВрдЬрд┐рдпрд╛рдБ / рд░рд┐рдлреНрд░реЗрд╢-рдСрд╡рд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рджреМрд░рд╛рди (рдкреНрд░рддреНрдпреЗрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЪрд▓рдиреЗ рдкрд░ рд╣рд░ рдмрд╛рд░ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП), рд╕рднреА рдХреБрдВрдЬрд┐рдпрд╛рдБ /var/lib/mercurial-server/.ssh/authorized_keys рдкрд░ рд▓рд┐рдЦреА рдЬрд╛рддреА рд╣реИрдВ
Sshd рдЗрди рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░реЗрдВ
 touch /var/lib/mercurial-server/.ssh/authorized_keys chmod 644 /var/lib/mercurial-server/.ssh/authorized_keys ln /var/lib/mercurial-server/.ssh/authorized_keys /etc/ssh/keys/hg.pub 

рд╕реНрдкрд░реНрд╢ рдХрд╛ рд╕рдорд╛рдкрди


рдпрджрд┐ рдЖрдк рдХреЗрд╡рд▓ hgadmin рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд╛рдмрд┐рдпрд╛рдБ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рддреЛ рдЗрд╕реЗ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ!
 touch /usr/bin/hg-update-users chmod 744 /usr/bin/hg-update-users nano /usr/bin/hg-update-users 

 chown hg -R /etc/mercurial-server/keys/ chmod 444 -R /etc/mercurial-server/keys/ sudo -u hg /var/lib/mercurial-server/refresh-auth 

рдирд┐рд░реАрдХреНрд╖рдг


рдорд░реНрдХреНрдпреВрд░рд┐рдпрд▓-рд╕рд░реНрд╡рд░ рдПрдбрдорд┐рди рдХреБрдВрдЬреА (рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░) рдмрдирд╛рдПрдБ
 ssh-keygen scp ~/.ssh/id_rsa.pub root@<b>_</b>:/etc/mercurial-server/keys/root/ ssh root@_ 'hg-update-users' 

рдпрджрд┐ рдЖрдк рдкрд░рд┐рд╖реНрдХрд░рдг рд╕реНрдкрд░реНрд╢ рд╕реЗ рдЪреВрдХ рдЧрдП рд╣реИрдВ, рддреЛ ssh рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╕рднреА рдХрдорд╛рдВрдб рдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВред
Ssh рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдПрдХ рдЬрдЯрд┐рд▓ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ! рддреГрддреАрдп рдкрдХреНрд╖реЛрдВ рдХреЛ ~ / .shsh / id_rsa рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░рд┐рд╕рд╛рд╡ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░реЗрдВ!
рдЕрдм рдкрд╣реБрдБрдЪ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ:
 $ ssh hg@_ PTY allocation request failed on channel 0 <u>mercurial-server: direct logins on the hg account prohibited</u> Connection to _ closed. 

рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпреЗ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ рд╣реИрдВ, рддреЛ sshd рдЖрдкрдХреА рдХреБрдВрдЬреА рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЕрдм рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
 ssh hg@_ 'hg -R hgadmin serve --stdio' 

рдпрджрд┐ 30 рд╕реЗрдХрдВрдб рдХреЗ рднреАрддрд░ рдЖрдкрдХреЛ рдХреЛрдИ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рдорд┐рд▓реА, рддреЛ рдХрдиреЗрдХреНрд╢рди рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЖрдк рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг


рдореЗрд░реЗ рд▓рд┐рдП, рд╕рдмрд╕реЗ рдЖрдо рдЧрд▓рддреА (рддреАрди рд╕реНрдерд╛рдкрдирд╛рдУрдВ рдореЗрдВ рд╕реЗ: ubuntu 10.04 рд╕рд░реНрд╡рд░, рд▓рд┐рдирдХреНрд╕ рдорд┐рдВрдЯ 12, рдлреЗрдбреЛрд░рд╛ 16) рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдереА:
 $ssh hg@_ 'hg -R hgadmin serve --stdio' Traceback (most recent call last): File "/var/lib/mercurial-server/hg-ssh", line 86, in <module> dispatch.dispatch(['-R', repo, 'serve', '--stdio']) File "/usr/lib64/python2.7/site-packages/mercurial/dispatch.py", line 31, in dispatch if req.ferr: AttributeError: 'list' object has no attribute 'ferr' 

рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╣рд▓ stackoverflow.com/questions/6730735/troubles-with-mercurial-1-9-and-ssh рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЖрд▓рд╕реА рд▓реЛрдЧ рдкреИрдЪ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдкреИрдЪ рдПрдЪрдЬреА-рдПрд╕рдПрд╕ рдкреИрдЪ_рдлрд╛рдЗрд▓):
 --- hg-ssh_old 2012-12-27 00:49:04.764989364 +0300 +++ hg-ssh 2012-12-27 00:50:16.173113572 +0300 @@ -83,7 +83,7 @@ repo = getrepo("read", cmd[6:-14]) if not os.path.isdir(repo + "/.hg"): fail("no such repository %s" % repo) - dispatch.dispatch(['-R', repo, 'serve', '--stdio']) + dispatch.dispatch(dispatch.request(['-R', repo, 'serve', '--stdio'])) elif cmd.startswith('hg init '): repo = getrepo("init", cmd[8:]) if os.path.exists(repo): @@ -91,7 +91,7 @@ d = os.path.dirname(repo) if d != "" and not os.path.isdir(d): os.makedirs(d) - dispatch.dispatch(['init', repo]) + dispatch.dispatch(dispatch.request(['init', repo])) else: fail("illegal command %r" % cmd) 

Source: https://habr.com/ru/post/In164095/


All Articles