Skip to main content

์ƒˆ SSH ํ‚ค ์ƒ์„ฑ ๋ฐ ssh-agent์— ์ถ”๊ฐ€

๊ธฐ์กด SSH ํ‚ค๋ฅผ ํ™•์ธํ•œ ํ›„ ์ธ์ฆ์— ์‚ฌ์šฉํ•  ์ƒˆ SSH ํ‚ค๋ฅผ ์ƒ์„ฑํ•œ ๋‹ค์Œ ssh-agent์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Platform navigation

SSH ํ‚ค ์•”ํ˜ธ ์ •๋ณด

SSH(Secure Shell Protocol)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GitHub์˜ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์—์„œ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•˜๊ณ  ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SSH๋ฅผ ํ†ตํ•ด ์—ฐ๊ฒฐํ•  ๋•Œ ๋กœ์ปฌ ๋จธ์‹ ์—์„œ ํ”„๋ผ์ด๋น— ํ‚ค ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ SSH ์ •๋ณด์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

SSH ํ‚ค๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์•”ํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ‚ค๋ฅผ ์ถ”๊ฐ€๋กœ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‚ค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋งˆ๋‹ค ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ‚ค์— ์•”ํ˜ธ๊ฐ€ ์žˆ๊ณ  ํ‚ค๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋งˆ๋‹ค ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์ง€ ์•Š์œผ๋ ค๋Š” ๊ฒฝ์šฐ SSH ์—์ด์ „ํŠธ์— ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SSH ์—์ด์ „ํŠธ๋Š” SSH ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์•”ํ˜ธ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

SSH ํ‚ค๊ฐ€ ์•„์ง ์—†๋Š” ๊ฒฝ์šฐ ์ธ์ฆ์— ์‚ฌ์šฉํ•  ์ƒˆ SSH ํ‚ค๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. SSH ํ‚ค๊ฐ€ ์ด๋ฏธ ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๊ธฐ์กด ํ‚ค๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ธฐ์กด SSH ํ‚ค ํ™•์ธ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

ํ•˜๋“œ์›จ์–ด ๋ณด์•ˆ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ GitHub์— ์ธ์ฆํ•˜๋ ค๋ฉด ํ•˜๋“œ์›จ์–ด ๋ณด์•ˆ ํ‚ค์— ๋Œ€ํ•œ ์ƒˆ SSH ํ‚ค๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ‚ค ์Œ์œผ๋กœ ์ธ์ฆํ•  ๋•Œ ํ•˜๋“œ์›จ์–ด ๋ณด์•ˆ ํ‚ค๋ฅผ ์ปดํ“จํ„ฐ์— ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ OpenSSH 8.2 ๋ฆด๋ฆฌ์Šค ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ƒˆ SSH ํ‚ค ์ƒ์„ฑ

๋กœ์ปฌ ๋จธ์‹ ์—์„œ ์ƒˆ SSH ํ‚ค๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‚ค๋ฅผ ์ƒ์„ฑํ•œ ํ›„ GitHub.com์˜ ๊ณ„์ •์— ๊ณต๊ฐœ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ SSH๋ฅผ ํ†ตํ•œ Git ์ž‘์—…์— ๋Œ€ํ•œ ์ธ์ฆ์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ  ํ•ญ๋ชฉ

GitHub๋Š” 2022๋…„ 3์›” 15์ผ์— ์ด์ „์˜ ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ํ‚ค ํ˜•์‹์„ ์‚ญ์ œํ•˜์—ฌ ๋ณด์•ˆ์„ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋‚ ์งœ๋ฅผ ๊ธฐ์ค€์œผ๋กœ DSA ํ‚ค(ssh-dss)๋Š” ๋” ์ด์ƒ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. GitHub์—์„œ ๊ฐœ์ธ ๊ณ„์ •์— ์ƒˆ DSA ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

valid_after๊ฐ€ 2021๋…„ 11์›” 2์ผ ์ด์ „์ธ RSA ํ‚ค(ssh-rsa)๋Š” ์„œ๋ช… ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ณ„์† ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ๋‚ ์งœ ์ดํ›„์— ์ƒ์„ฑ๋œ RSA ํ‚ค๋Š” SHA-2 ์„œ๋ช… ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. SHA-2 ์„œ๋ช…์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ์ผ๋ถ€ ์ด์ „ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ํ„ฐ๋ฏธ๋„ํ„ฐ๋ฏธ๋„Git Bash๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

  2. ์•„๋ž˜ ํ…์ŠคํŠธ๋ฅผ ๋ถ™์—ฌ๋„ฃ์€ ํ›„ ์˜ˆ์ œ์—์„œ ์‚ฌ์šฉํ•œ ๋ฉ”์ผ์„ GitHub ๋ฉ”์ผ ์ฃผ์†Œ๋กœ ๋ฐ”๊ฟ”์„œ ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค.

    ssh-keygen -t ed25519 -C "your_email@example.com"
    

    ์ฐธ๊ณ  ํ•ญ๋ชฉ

    Ed25519 ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
    

    ๊ทธ๋Ÿฌ๋ฉด ์ œ๊ณต๋œ ์ด๋ฉ”์ผ์„ ๋ ˆ์ด๋ธ”๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์ƒˆ SSH ํ‚ค๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

    > Generating public/private ALGORITHM key pair.
    

    "ํ‚ค๋ฅผ ์ €์žฅํ•  ํŒŒ์ผ์„ ์ž…๋ ฅํ•˜์„ธ์š”"๋ผ๋Š” ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ์ž…๋ ฅ ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ ๊ธฐ๋ณธ ํŒŒ์ผ ์œ„์น˜๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ „์— SSH ํ‚ค๋ฅผ ๋งŒ๋“  ์ ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ssh-keygen์ด ๋‹ค๋ฅธ ํ‚ค๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑํ•˜๋„๋ก ์š”์ฒญํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ๊ฒฝ์šฐ ์‚ฌ์šฉ์ž ์ง€์ • ์ด๋ฆ„์„ ๊ฐ€์ง„ SSH ํ‚ค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ๋ณธ ํŒŒ์ผ ์œ„์น˜๋ฅผ ์ž…๋ ฅํ•˜๊ณ  id_ALGORITHM์„ ์‚ฌ์šฉ์ž ์ง€์ • ํ‚ค ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    > Enter a file in which to save the key (/Users/YOU/.ssh/id_ALGORITHM): [Press enter]
    
    > Enter file in which to save the key (/c/Users/YOU/.ssh/id_ALGORITHM):[Press enter]
    
    > Enter a file in which to save the key (/home/YOU/.ssh/id_ALGORITHM):[Press enter]
    
  3. ํ”„๋กฌํ”„ํŠธ์— ๋ณด์•ˆ ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ SSH ํ‚ค ์•”ํ˜ธ ์‚ฌ์šฉ์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

    > Enter passphrase (empty for no passphrase): [Type a passphrase]
    > Enter same passphrase again: [Type passphrase again]
    

ssh-agent์— SSH ํ‚ค ์ถ”๊ฐ€

ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ssh-agent์— ์ƒˆ SSH ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์ „์— ๊ธฐ์กด SSH ํ‚ค๋ฅผ ํ™•์ธํ•˜๊ณ  ์ƒˆ SSH ํ‚ค๋ฅผ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์—์ด์ „ํŠธ์— SSH ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ macports, homebrew ๋˜๋Š” ๊ธฐํƒ€ ์™ธ๋ถ€ ์›๋ณธ์—์„œ ์„ค์น˜ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์•„๋‹Œ ๊ธฐ๋ณธ macOS ssh-add ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ssh-agent๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    

    ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ssh-agent๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— sudo -s -H๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฃจํŠธ ์•ก์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ exec ssh-agent bash ๋˜๋Š” exec ssh-agent zsh๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ssh-agent๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. macOS Sierra 10.12.2 ์ด์ƒ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ssh-agent์— ํ‚ค๋ฅผ ์ž๋™์œผ๋กœ ๋กœ๋“œํ•˜๊ณ  ํ‚ค ์ง‘ํ•ฉ์— ์•”ํ˜ธ๋ฅผ ์ €์žฅํ•˜๋„๋ก ~/.ssh/config ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ๋จผ์ € ~/.ssh/config ํŒŒ์ผ์ด ๊ธฐ๋ณธ ์œ„์น˜์— ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

      $ open ~/.ssh/config
      > The file /Users/YOU/.ssh/config does not exist.
      
    • ํŒŒ์ผ์ด ์—†์œผ๋ฉด ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

      touch ~/.ssh/config
      
    • ~/.ssh/config ํŒŒ์ผ์„ ์—ด๊ณ  ๋‹ค์Œ ์ค„์„ ํฌํ•จํ•˜๋„๋ก ํŒŒ์ผ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค. SSH ํ‚ค ํŒŒ์ผ์— ์˜ˆ์ œ ์ฝ”๋“œ์™€ ๋‹ค๋ฅธ ์ด๋ฆ„ ๋˜๋Š” ๊ฒฝ๋กœ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํ˜„์žฌ ์„ค์ •๊ณผ ์ผ์น˜ํ•˜๋„๋ก ํŒŒ์ผ ์ด๋ฆ„ ๋˜๋Š” ๊ฒฝ๋กœ๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

      Text
      Host github.com
        AddKeysToAgent yes
        UseKeychain yes
        IdentityFile ~/.ssh/id_ed25519
      

      ์ฐธ๊ณ  ํ•ญ๋ชฉ

      • ํ‚ค์— ์•”ํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๋„๋ก ์„ ํƒํ•œ ๊ฒฝ์šฐ UseKeychain ์ค„์„ ์ƒ๋žตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • Bad configuration option: usekeychain ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ๊ตฌ์„ฑ์˜ Host *.github.com ์„น์…˜์— ์ค„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
      Text
      Host github.com
        IgnoreUnknown UseKeychain
      
  3. ssh-agent์— SSH ํ”„๋ผ์ด๋น— ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ํ‚ค ์ง‘ํ•ฉ์— ์•”ํ˜ธ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ํ‚ค๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ด๋ฆ„์ด ๋‹ค๋ฅธ ๊ธฐ์กด ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ ๋ช…๋ น์˜ _id_ed25519_๋ฅผ ํ”„๋ผ์ด๋น— ํ‚ค ํŒŒ์ผ์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    ssh-add --apple-use-keychain ~/.ssh/id_ed25519
    

    ์ฐธ๊ณ  ํ•ญ๋ชฉ

    --apple-use-keychain ์˜ต์…˜์€ ssh-์—์ด์ „ํŠธ์— SSH ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์•”ํ˜ธ๋ฅผ ํ‚ค ์ฒด์ธ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ํ‚ค์— ์•”ํ˜ธ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ธฐ๋กœ ์„ ํƒํ•œ ๊ฒฝ์šฐ --apple-use-keychain ์˜ต์…˜ ์—†์ด ๋ช…๋ น์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    --apple-use-keychain ์˜ต์…˜์€ ssh-add์˜ Apple ํ‘œ์ค€ ๋ฒ„์ „์— ์žˆ์Šต๋‹ˆ๋‹ค. Monterey(12.0) ์ด์ „์˜ macOS ๋ฒ„์ „์—์„œ --apple-use-keychain ๋ฐ --apple-load-keychain ํ”Œ๋ž˜๊ทธ๋Š” -K์™€ -A ๊ตฌ๋ฌธ์„ ๊ฐ๊ฐ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

    ssh-add์˜ Apple ํ‘œ์ค€ ๋ฒ„์ „์ด ์„ค์น˜์น˜๋˜์–ด ์žˆ์ง€ ์•Š์€ ๊ฒฝ์šฐ, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์˜ค๋ฅ˜: ssh-add: illegal option -- apple-use-keychain์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

    ์•”ํ˜ธ๋ฅผ ๋ฌป๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ๊ณ„์† ํ‘œ์‹œ๋˜๋ฉด, ~/.zshrc ํŒŒ์ผ(๋˜๋Š” bash์šฉ ~/.bashrc ํŒŒ์ผ)์— ๋ช…๋ น์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  4. GitHub์˜ ๊ณ„์ •์— SSH ํผ๋ธ”๋ฆญ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub ๊ณ„์ •์— ์ƒˆ SSH ํ‚ค ์ถ”๊ฐ€์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

GitHub Desktop์ด ์„ค์น˜๋œ ๊ฒฝ์šฐ ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ๋ณต์ œํ•˜๊ณ  SSH ํ‚ค๋ฅผ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์ƒˆ ์ƒ์Šน๋œ ๊ด€๋ฆฌ์ž PowerShell ์ฐฝ์—์„œ ssh-agent๊ฐ€ ์‹คํ–‰ ์ค‘์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. SSH ํ‚ค ์•”ํ˜ธ ์‚ฌ์šฉ์˜ "ssh-agent ์ž๋™ ์‹œ์ž‘" ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜๋™์œผ๋กœ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    # start the ssh-agent in the background
    Get-Service -Name ssh-agent | Set-Service -StartupType Manual
    Start-Service ssh-agent
    
  2. ์ƒ์Šน๋œ ๊ถŒํ•œ์ด ์—†๋Š” ํ„ฐ๋ฏธ๋„ ์ฐฝ์—์„œ ssh-agent์— SSH ํ”„๋ผ์ด๋น— ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ํ‚ค๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ด๋ฆ„์ด ๋‹ค๋ฅธ ๊ธฐ์กด ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ ๋ช…๋ น์˜ _id_ed25519_๋ฅผ ํ”„๋ผ์ด๋น— ํ‚ค ํŒŒ์ผ์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    ssh-add c:/Users/YOU/.ssh/id_ed25519
    
  3. GitHub์˜ ๊ณ„์ •์— SSH ํผ๋ธ”๋ฆญ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub ๊ณ„์ •์— ์ƒˆ SSH ํ‚ค ์ถ”๊ฐ€์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

  1. ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ssh-agent๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    $ eval "$(ssh-agent -s)"
    > Agent pid 59566
    

    ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ssh-agent๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— sudo -s -H๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฃจํŠธ ์•ก์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๊ฑฐ๋‚˜ exec ssh-agent bash ๋˜๋Š” exec ssh-agent zsh๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ssh-agent๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ssh-agent์— SSH ํ”„๋ผ์ด๋น— ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ํ‚ค๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ด๋ฆ„์ด ๋‹ค๋ฅธ ๊ธฐ์กด ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ ๋ช…๋ น์˜ _id_ed25519_๋ฅผ ํ”„๋ผ์ด๋น— ํ‚ค ํŒŒ์ผ์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    ssh-add ~/.ssh/id_ed25519
    
  3. GitHub์˜ ๊ณ„์ •์— SSH ํผ๋ธ”๋ฆญ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub ๊ณ„์ •์— ์ƒˆ SSH ํ‚ค ์ถ”๊ฐ€์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

ํ•˜๋“œ์›จ์–ด ๋ณด์•ˆ ํ‚ค์— ๋Œ€ํ•œ ์ƒˆ SSH ํ‚ค ์ƒ์„ฑ

macOS๋‚˜ Linux๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ƒˆ SSH ํ‚ค๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์ „์— SSH ํด๋ผ์ด์–ธํŠธ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๊ฑฐ๋‚˜ ์ƒˆ SSH ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ค์น˜ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์˜ค๋ฅ˜: ์•Œ ์ˆ˜ ์—†๋Š” ํ‚ค ์œ ํ˜•์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.

  1. ์ปดํ“จํ„ฐ์— ํ•˜๋“œ์›จ์–ด ๋ณด์•ˆ ํ‚ค๋ฅผ ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค.

  2. ํ„ฐ๋ฏธ๋„ํ„ฐ๋ฏธ๋„Git Bash๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

  3. ์•„๋ž˜ ํ…์ŠคํŠธ๋ฅผ ๋ถ™์—ฌ๋„ฃ์€ ํ›„ ์˜ˆ์ œ์˜ ๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ GitHub ๊ณ„์ •๊ณผ ์—ฐ๊ฒฐ๋œ ๋ฉ”์ผ ์ฃผ์†Œ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    ssh-keygen -t ed25519-sk -C "your_email@example.com"
    
    ssh-keygen -t ed25519-sk -C "your_email@example.com"
    
    ssh-keygen -t ed25519-sk -C "your_email@example.com"
    

    ์ฐธ๊ณ  ํ•ญ๋ชฉ

    ๋ช…๋ น์ด ์‹คํŒจํ•˜๊ณ  invalid format ๋˜๋Š” feature not supported, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ Ed25519 ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ํ•˜๋“œ์›จ์–ด ๋ณด์•ˆ ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ๋‹ค์Œ ๋ช…๋ น์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ssh-keygen -t ecdsa-sk -C "your_email@example.com"
    
  4. ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ํ•˜๋“œ์›จ์–ด ๋ณด์•ˆ ํ‚ค์˜ ๋‹จ์ถ”๋ฅผ ํ„ฐ์น˜ํ•ฉ๋‹ˆ๋‹ค.

  5. โ€œEnter a file in which to save the keyโ€(ํ‚ค๋ฅผ ์ €์žฅํ•  ํŒŒ์ผ ์ž…๋ ฅ)๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด Enter ํ‚ค๋ฅผ ๋ˆŒ๋Ÿฌ ๊ธฐ๋ณธ ํŒŒ์ผ ์œ„์น˜๋ฅผ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

    > Enter a file in which to save the key (/Users/YOU/.ssh/id_ed25519_sk): [Press enter]
    
    > Enter a file in which to save the key (c:\Users\YOU\.ssh\id_ed25519_sk):[Press enter]
    
    > Enter a file in which to save the key (/home/YOU/.ssh/id_ed25519_sk):[Press enter]
    
  6. ์•”ํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ผ๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด Enter ํ‚ค๋ฅผ ๋ˆ„๋ฆ…๋‹ˆ๋‹ค.

    > Enter passphrase (empty for no passphrase): [Type a passphrase]
    > Enter same passphrase again: [Type passphrase again]
    
  7. GitHub์˜ ๊ณ„์ •์— SSH ํผ๋ธ”๋ฆญ ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ GitHub ๊ณ„์ •์— ์ƒˆ SSH ํ‚ค ์ถ”๊ฐ€์„(๋ฅผ) ์ฐธ์กฐํ•˜์„ธ์š”.