³ªÀÌÇÎ Ä«Æ®

Single-User SSH API ¿ë Python ÇÁ·¹ÀÓ ¿öÅ©
Áö±Ý ´Ù¿î·Îµå

³ªÀÌÇÎ Ä«Æ® ¼øÀ§ ¹× ¿ä¾à

±¤°í

  • Rating:
  • ƯÇã:
  • BSD License
  • °¡°Ý:
  • FREE
  • °Ô½ÃÀÚ À̸§:
  • Chris Dickinson
  • °Ô½ÃÀÚ À¥»çÀÌÆ®:
  • http://domain51.com

³ªÀÌÇÎ Ä«Æ® ű×


³ªÀÌÇÎ Ä«Æ® ¼³¸í

´ÜÀÏ »ç¿ëÀÚ SSH API¸¦À§ÇÑ Python ÇÁ·¹ÀÓ ¿öÅ© NappingCatÀº ´ÜÀÏ »ç¿ëÀÚ SSH È£ÃâÀ» ¶ó¿ìÆÃÇϱâÀ§ÇÑ Django ¿µ°¨À»¹ÞÀº ÇÁ·¹ÀÓ ¿öÅ©ÀÔ´Ï´Ù. ¿ø°Ý¿¡ÀÖ´Â ¼ÒÇÁÆ®¿þ¾î¸¦ ±¸ÇöÇϱâÀ§ÇÑ ¼ÒÇÁÆ®¿þ¾î¸¦ ±¸ÇöÇϱâ À§ÇØ »ç¿ëÇϽʽÿÀ : Sudo Pip ¼³Ä¡ nappingCatuserAdd -m -u-su / bin / bash -r gitsudo su gitnappingcat_initconfcat id_rsa.pub > ·ÎÄà MachinesUDO PIP¿¡¼­ NappingCat_CreatesuperUser Admin # admint + git : //github.com/chrisdickinson/thundercat#egg=thundercatthundercat addremote <´Ð³×ÀÓ> thundercat add_permission admin KittyGit CD¸¦ ÀÌÁ¦ # ÀÌÁ¦ CD git repo ... thundercat create_repo somerepo # ¿ø°Ý ¼­¹ö¿¡ repo¸¦ ¸¸µì´Ï´Ù. # ¹¯´Â Áú¹®À» ¹¯½À´Ï´Ù. ¹¯´Â Áú¹®Àº ÀÌÁ¦ Gitosis¸¦ »ç¿ëÇØ ¿Ô½À´Ï´Ù - Á¤¸» ÁÁ½À´Ï´Ù! ±×·¯³ª ½ÇÁ¦·Î, ³ª´Â ±×°ÍÀÌ ¾î¶»°Ô ÀÛµ¿ÇÏ´ÂÁö ÀüÇô ¸ð¸¥´Ù. Áö³­ ÁÖ¿¡ ³ª´Â ±×°ÍÀ» °ñ¶ó ³Â½À´Ï´Ù. ~ / .ssh / authorized_keys ÆÄÀÏÀ» »ç¿ëÇÏ¿© ~ / .ssh / authorized_keys ÆÄÀÏÀ» »ç¿ëÇÏ¿© Git ÁÖÀ§¿¡ Á¦ÇÑµÈ API¸¦ ³ëÃâ½ÃÄÑ Gitosis-Serve¸¦ ÅëÇØ ¸ðµç µé¾î¿À´Â ¸í·ÉÀ» ÀÚµ¿À¸·Î ±ò¶§±â·Î ³ëÃâ½ÃŲ ´ÙÀ½ È®ÀÎÇÕ´Ï´Ù. Åνõµ¸¦ ÅëÇØ ¹°°ÇÀ» º¸³»±â Àü¿¡ ¸ðµç °ÍÀÌ Á¤°áÇÑ °Íó·³ º¸ÀÌ´ÂÁö È®ÀÎÇϽʽÿÀ. ÀÌ°ÍÀº ²Ï ¸ÚÁö´Ù! Á¶±Ý ´õ ¸¹Àº ±â´ÉÀÌ ÀÖÀ¸¸é ÁÁÀ» °ÍÀÔ´Ï´Ù. ¾Æ¹«°Íµµ ¹ÌÄ£ - ÁöÁ¡ ¼öÁØÀÇ ±ÇÇÑÀ̳ª ¾Æ¹«°Íµµ ¾øÀ½ - GitHub¿¡¼­ ÀûÀýÇÑ ¼³ÅÁÀ» Á» ´õ Á¶±Ý ´õ ¸¹ÀÌ. Ç÷§ ÆÄÀÏÀ» ÆíÁýÇϰųª ±âÁ¸ ¸®Æ÷ÁöÅ丮¸¦ Æ÷Å© ÇÒ ¼ö ¾øµµ·Ï ÀúÀå¼Ò¸¦ ¸¸µé ¼ö¾ø´Â °Íó·³ º¸ÀÏ ¼ö ÀÖ½À´Ï´Ù .I´Â ´ÜÀÏ »ç¿ëÀÚ SSH ½Ã½ºÅÛ¿¡ ´ëÇÑ È®Àå °¡´ÉÇÑ API¸¦ ÀÛ¼ºÇÏ´Â ¹æ¹ýÀ» ½ÇÁ¦·Î ¿øÇßÀ½À» ½ÇÇöÇß½À´Ï´Ù. ±×°ÍÀº ¿©ÀüÈ÷ ÀÌ»óÇÑ °Íó·³ º¸ÀÔ´Ï´Ù. ±×·¸°Ô ¸»ÇÏ°í ³ª¿Í ÇÔ²² ¸Ç¼ÕÀ¸·Î ¸Ç¼ÕÀ¸·Î º¸ÀÔ´Ï´Ù. ÀÌ°ÍÀº ±× °á°úÀÔ´Ï´Ù. ±× °á°ú, ±×°ÍÀº ³¡³ªÁö ¾Ê¾Ò½À´Ï´Ù! ±×°ÍÀº ½ÇÇèÀûÀÔ´Ï´Ù! NappingCAT´Â Gitosis¿Í µ¿ÀÏÇÑ ¿ø¸®·Î ÀÛµ¿Çϸç ÇöÀç ÀϺΠÇÙ½É ±â´ÉÀ» »« °ÍÀÔ´Ï´Ù. ±¸¼ºµÈ ¸ðµç »ç¿ëÀÚ¸¦ ÅëÇØ ±¸¼ºµÈ ¸ðµç ssh ¸í·ÉÀº Django App¿¡¼­ º¼ ¼öÀÖ´Â °Íó·³ ¸¹ÀÌ º¸ÀÌ´Â ¸í·É ¶ó¿ìÅ͸¦ ÅëÇØ Àü´ÞµË´Ï´Ù. ¿¹¸¦ µé¾î KittyGit (¾Û¿¡¼­´Â °³³äÀÇ ¹æÁö·Î ¾´ ¾Û) : nappingcat.patterns °¡Á® ¿À±â patternscmdpatterns = ÆÐÅÏ ( 'kittygit.handlers', (r '^ ŰƼ - git \'(r '^ w +). git \' ','fork_repo '), (r'^ kitty-git create-repo \ '(? p \' ','create_repo '), (r'^ git (? p +) ','handle_git '),) Åë°úÇÏ´Â ¸ðµç ssh ¸í·ÉÀº ÀÏÄ¡ Ç׸ñÀ» ãÀ» ¶§±îÁö Àç Á¤±Ô½ÄÀ» Åë°ú ÇÑ ´ÙÀ½ ÇØ´ç ÇÔ¼ö·Î ²¨³¾ °ÍÀÔ´Ï´Ù (´ÙÀ½°ú °°Àº °Íó·³ º¸ÀÔ´Ï´Ù) def handle_git (¿äû, Á¶Ä¡) : # ÀÏÀÌ ÀϾ ¼ö ÀÖ½À´Ï´Ù. ±×µéÀº ¾Æ¹« °Íµµ ¹Ýȯ ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù - Sys.stderrÀ» ÅëÇØ µ¹¾Æ°£ °ÍÀÌ ¹«¾ùÀÌµç °£°ÝÀ» °¡Á® ¿À´Â °Í¿¡ ±â´ë°í ÀÖ½À´Ï´Ù. ±×·¯³ª ¿äû °´Ã¼°¡ Àü´ÞµÇ¾úÀ½À» ¾Ë ¼ö ÀÖ°í ´ÙÀ½ : request.user # ¼ö½Å µÈ UsernameRequest.SettingsÀÇ ¹®ÀÚ¿­ # tÀÇ configparser ÀνºÅϽº ±×´Â FileRequest.command # ¿ø·¡ ¸í·ÉÀ» interceptedRequest.std {in, out, err} # std streamsrequest.auth_backend # ¼¼¼Ç ¼³Á¤¿¡ ´ëÇÑ ÀÎÁõ ¹é¿£µå »çº»ÀÌ ~ / nappercat.conf¿¡¼­·ÎµåµË´Ï´Ù. ¿¹Á¦´Â ´ÙÀ½°ú °°½À´Ï´Ù. router = kittygit.patternsauth = nappercat.cattrib.sleazy_auth.scrtrib.sleazy_auth.sleazyauthpaths = / users / chris / projects / nappingcat / user / chris / projects / kittygitte ¶ó¿ìÅÍ ¸Å°³ º¯¼ö º¯¼ö°¡ÀÖ´Â ÆÄÀ̽㠸ðµâÀ» Á¤ÀÇÇÕ´Ï´Ù. À̸§ÀÌ ÁöÁ¤µÈ cmdpatterns¸¦ °¡Á®¿Ã ¼ö ÀÖ½À´Ï´Ù. À§ÀÇ °Íó·³ º¸ÀÔ´Ï´Ù! ÀÎÁõ ¸Å°³ º¯¼ö´Â ÀÎÁõ¿¡ »ç¿ëÇÒ ¸ðµâÀ» Á¤ÀÇÇÕ´Ï´Ù. Áö±Ý ´çÀåÀº ¸ðµç °ÍÀ» "¿¹"¶ó°í ¸»ÇÑ ¹Ù¡¸¸À¸·Î´Â ÇϳªÀÇ ¹é¿£µå - 'sleazy_auth'°¡ ÀÖ½À´Ï´Ù. ÀÌ°ÍÀº Django¿Í °°Àº cmdpatterns¸¦ Áßø ÇÒ ¼öÀÖ´Â Å« todoÀÔ´Ï´Ù. nappingcat.patterns °¡Á® ¿À±â ÆÐÅÏ¿¡¼­, includecmdpatterns = ÆÐÅÏ ( '', (r '^', include ( 'kittygit.patterns)))À» Æ÷ÇÔ). API°¡ º°µµÀÇ Apps.Again¿¡¼­ ½×¾Æ ¿Ã¸®¸é ¸Å¿ì º£Å¸ º£Å¸ÀÔ´Ï´Ù. ¿ä±¸ »çÇ× : ¡¤ ÆÄÀ̽ã


³ªÀÌÇÎ Ä«Æ® °ü·Ã ¼ÒÇÁÆ®¿þ¾î