๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT/Etc

gitlab ssh key ๋“ฑ๋ก ๋ฐฉ๋ฒ• (credential store์™€ ๋น„๊ต)

by Full~ day ๐Ÿ˜€ 2024. 9. 3.
728x90
๋ฐ˜์‘ํ˜•

gitlab ssh

gitlab ๊ฐœ์š”

gitlab์€ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํŒ€์ด ์ œํ’ˆ์„ ๊ณ„ํš, ์ฝ”๋“œํ™”, ํ…Œ์ŠคํŠธ, ๋ฐฐํฌ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š”๋ฐ ๋„์›€์ด ๋˜๋Š” ์›น ๊ธฐ๋ฐœ ๋ฐ๋ธŒ์˜ต์Šค ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค.

 

ssh ๊ฐœ์š”

๋ณด์•ˆ ์‰˜ ํ”„๋กœํ† ์ฝœ์˜ ์•ฝ์ž๋กœ ๋ณด์•ˆ๋˜์ง€ ์•Š์€ ๋„คํŠธ์›Œํฌ์—์„œ ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์šด์˜ํ•˜๊ธฐ ์œ„ํ•œ ์•”ํ˜ธํ™” ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ํ†จ ์ž…๋‹ˆ๋‹ค.

๊ณต๊ฐœ ํ‚ค ์•”ํ˜ธํ™”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›๊ฒฉ ์ปดํ“จํ„ฐ๋ฅผ ์ธ์ฆํ•ฉ๋‹ˆ๋‹ค.

 

์ ์šฉํ•˜๊ฒŒ ๋œ ์ด์œ 

gitlab์—์„œ ์†Œ์Šค๋ฅผ ํด๋ก ํ•˜์—ฌ push, pull ๋“ฑ๋“ฑ ์‚ฌ์šฉ ์‹œ  username, password๋ฅผ ์š”๊ตฌ๋ฅผ ํ•œ๋‹ค.

๊ณ„์†๋˜๋Š” ๋ฐ˜๋ณต์ž‘์—…์€ ๊ฒฐ๊ตญ ๊ท€์ฐฎ๋‹ค๋Š” ์ƒ๊ฐ๋งŒ ๋‚จ๊ฒŒ ๋˜์—ˆ๋‹ค.

๋งค๋ฒˆ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ฒ€์ƒ‰ํ•ด๋ณด๋‹ˆ ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•๋“ค์ด ๋‚˜์˜ค๋Š”๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค.

๊ฒ€์ƒ‰ํ•œ ๊ฒฐ๊ณผ ์ค‘ ๋‘๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‹œ๋„ํ•ด๋ณด๋ ค๊ณ ํ–ˆ๋‹ค

๋ชฉ์ ์€ ์ถ”๊ฐ€ ์ž…๋ ฅ์—†์ด git ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด๊ณ  ๊ทธ ๋ชฉ์ ์— ๋งž๋Š” ๋ฐฉ๋ฒ•์€ ๋ฐ”๋กœ

์ธ์ฆ ์ •๋ณด ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•(Credential ์ €์žฅ์†Œ)๊ณผ ssh key ๋“ฑ๋ก ๋ฐฉ๋ฒ•์ด์—ˆ๋‹ค.

 

์ ์šฉ๊ณผ์ •

Credential ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉ

์ฒซ๋ฒˆ์งธ ์ ์šฉ ๊ณผ์ •์€ Credential ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์—ˆ๋‹ค. 

Credential ์ €์žฅ์†Œ๋Š” ๋งค๋ฒˆ Credential๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์„ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด ํ•œ๋ฒˆ ์ €์žฅํ•ด๋‘๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด ์ž…๋ ฅ์‹œ ์ž๋™์œผ๋กœ ์ธ์ฆ์ •๋ณด๊ฐ€ ์ž…๋ ฅ์ด ๋˜๋„๋„๋ก ํ•ด์ฃผ๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค. 

๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ์•„๋ฌด๋Ÿฐ ์ €์žฅ๋„ ๋˜์–ด์žˆ์ง€์•Š์•„ ๋งค๋ฒˆ ์ธ์ฆ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

์ธ์ฆ ์ €์žฅ์†Œ ๊ธฐ๋Šฅ์—๋Š” cache๋ชจ๋“œ ์™€ store๋ชจ๋“œ๊ฐ€ ์žˆ์—ˆ๋Š”๋ฐ

cache๋ชจ๋“œ๋Š” ์ œ๊ฐ€ ์ƒ๊ฐํ•œ ๋ชฉ์ ๊ณผ ๋ถ€ํ•ฉํ•˜์ง€๋งŒ ์กฐ๊ธˆ ๋ถ€์กฑํ–ˆ์Šต๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ผ์ •์‹œ๊ฐ„์ด ์ง€๋‚˜๋ฉด ๋‹ค์‹œ ์ธ์ฆ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ store๋ชจ๋“œ๋กœ ์„ค์ •ํ•˜์—ฌ ์ธ์ฆ์ •๋ณด๋ฅผ disk์˜ ํ…์ŠคํŠธ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜์—ฌ ๊ณ„์† ์œ ์ง€๋˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ธ์ฆ์ •๋ณด ์š”๊ตฌ

์ด๋ฒˆ์—” git config credentail.helper store ์ž…๋ ฅํ•œ ๋’ค ์‹œ๋„ํ•ด๋ณด์•˜๋‹ค

credential.helper store ์ ์šฉ

๋‹ค์‹œ ํ•œ ๋ฒˆ ๋” git pull์„ ํ•˜๋ฉด ๋”์ด์ƒ ์ธ์ฆ์„ ์š”๊ตฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ์ธ์ฆ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋๋‚ด๋ ค๊ณ ํ–ˆ์œผ๋‚˜ ์ธ์ฆ์ •๋ณด๋ฅผ ์–ด๋–ป๊ฒŒ ํŒŒ์ผ์— ์ €์žฅ๋˜๋Š”์ง€ ๊ถ๊ธˆํ•ด์„œ ์ฐพ์•„๋ณด์•˜๋‹ค.

๊ฒฝ๋กœ๋Š” $HOME/.git-credentials ์— ์ €์žฅ๋˜์–ด์žˆ๋‹ค๋Š”๊ฑธ ํ™•์ธํ–ˆ๋‹ค.

vi $HOME/.git-credentials ๋“ค์–ด๊ฐ€๋ณด๋‹ˆ username๊ณผ password๊ฐ€ ๊ทธ๋Œ€๋กœ ์ ํ˜€์žˆ์—ˆ๋‹ค.

๋ฌผ๋ก  password๋ฅผ ๊ฐœ์ธ์ ‘๊ทผํ‚ค๋ฅผ ๋ฐœ๊ธ‰ํ•˜๊ณ  ํ•ด๋„๋˜๊ธฐ ๋–„๋ฌธ์— ํฌ๊ฒŒ ๋ฌธ์ œ๋Š” ๋˜์ง€์•Š์•˜์ง€๋งŒ ๊ฐœ์ธ์ ‘๊ทผํ‚ค๊ฐ€ ์•„๋‹Œ ๊ทธ๋ƒฅ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ ํ˜€์žˆ์œผ๋‹ˆ ์ข€ ์ด์ƒํ•ด๋ณด์˜€๋‹ค.

 

ssh key ๋“ฑ๋ก

๋‘๋ฒˆ์งธ ์ ์šฉ๊ณผ์ •์€ ssh key๋ฅผ ๋“ฑ๋กํ•ด์„œ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‹œ๋„ํ•ด๋ณด์•˜๋‹ค.

๊ณผ์ •์€ ๋Œ€๋žต ์ด๋ ‡๋‹ค ssh key ๋ฐœ๊ธ‰ -> ๊ฐœ์ธํ‚ค๋Š” ๋ณด๊ด€ -> ๊ณต๊ฐœํ‚ค๋Š” gitlab ssh keys์— ๋“ฑ๋ก

 

ssh

ssh-keygen //or ssh-keygen -t ed25519

์•”ํ˜ธํ™”์•Œ๊ณ ๋ฆฌ์ฆ˜์€ rsa ์™€ ed25519 ๋‘˜์ค‘ ํ•˜๋‚˜ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

์ผ๋‹จ ์ ์šฉ์€ rsa์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ•ด๋ณด์•˜๋‹ค. gitalb ssh ๊ด€๋ จ ๋‚ด์šฉ์„ ๋ณด๋ฉด ed25519๊ฐ€ rsa๋ฐฉ์‹๋ณด๋‹ค ๋” ์•ˆ์ „ํ•˜๋‹ค๊ณ  ์ ํ˜€์žˆ์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ ed25519๋Š” ์ข€๋” ๊ณต๋ถ€๋ฅผ ํ•˜๊ณ  ๋‚œ ๋’ค ์‚ฌ์šฉํ•ด๋ณผ ์˜ˆ์ •์ด๋‹ค.

ssh-keygen์„ ํ•˜๊ฒŒ๋˜๋ฉด ๊ณต๊ฐœํ‚ค์™€ ๊ฐœ์ธํ‚ค๊ฐ€ ์ƒ์„ฑ์ด ๋œ๋‹ค.

ssh-keygen

์ƒ์„ฑํ•˜๊ณ  ๋‚œ๋’ค ssh-agent๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

eval $(ssh-agent)
Agent pod 981

๊ทธ๋ฆฌ๊ณ  ssh-agent์— ํ‚ค๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

ssh-add ~/.ssh/test2_rsa

 

์ด๋ฒˆ์—” ๊นƒ๋žฉ์— ๋“ฑ๋กํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ณต๊ฐœํ‚ค๋ฅผ ๋ณต์‚ฌํ•ด์•ผํ•œ๋‹ค

cd ~/.ssh

ํ•ด๋‹น ์œ„์น˜๋กœ ์ด๋™ํ•˜๋ฉด ์ƒ์„ฑํ–ˆ๋˜ ํŒŒ์ผ์ด ์กด์žฌํ•˜๊ฒŒ ๋œ๋‹ค

test2_rsa, test2_rsa.pub

 

ํ•ด๋‹น ์ƒ์„ฑ๋œ ๊ณต๊ฐœํ‚ค๋ฅผ ๋ณต์‚ฌํ•ด์„œ gitlab์— ๋“ฑ๋กํ•ด์•ผํ•œ๋‹ค.

cat ~/.ssh/test2_rsa.pub

์œ„ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ํŒŒ์ผ์•ˆ์— ํ‚ค๊ฐ’์ด ํ‘œ์‹œ๊ฐ€ ๋œ๋‹ค.

ํ‘œ์‹œ๊ฐ€๋œ ํ‚ค๊ฐ’์„ ๋ณต์‚ฌํ•œ ๋’ค ๊นƒ๋žฉ์— ๋“ฑ๋กํ•œ๋‹ค.

ssh key ๋“ฑ๋ก

title์€ ์ค‘์š”ํ•˜์ง€์•Š์œผ๋‹ˆ ์‹ ๊ฒฝ์“ธํ•„์š”๋Š” ์—†์—ˆ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€ ์ง„ํ–‰์ด ๋˜์—ˆ๋‹ค๋ฉด ssh key๋“ฑ๋ก์€ ์™„๋ฃŒ๋˜์—ˆ๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ ssh ํ‚ค๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ถ”๊ฐ€๋˜์—ˆ๋Š”์ง€ ํ™•์ธ์„ ํ•ด์•ผํ•œ๋‹ค.

๋‹ค์Œ ๋ช…๋ น์–ด๋กœ ํ™•์ธ์„ ํ•˜๋ฉด ๋œ๋‹ค

ssh -T git@gitlab.com

Welcome to GitLab, @name!

์œ„ ์ฒ˜๋Ÿผ welcome to gitlab์ด ๋‚˜์˜ค๋ฉด ์ •์ƒ์ ์œผ๋กœ ๋œ๊ฒƒ์ด๋‹ค.

๋งŒ์•ฝ ์ œ๋Œ€๋กœ ๋˜์ง€์•Š์•˜๋‹ค๋ฉด  Permission denied (publickey) ๋ฌธ๊ตฌ๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค.

๋‹ค์‹œ ํ•œ๋ฒˆ ๋” git ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ธ์ฆ์ •๋ณด ์ž…๋ ฅ ์—†์ด ์ง„ํ–‰์ด ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

์ ์šฉ์ค‘ ๋ฌธ์ œ๋ฐœ์ƒ

1.ssh-agent ํ‚ค ๋“ฑ๋ก ํ• ๋•Œ ๊ฐœ์ธํ‚ค๊ฐ€ ์•„๋‹Œ ๊ณต๊ฐœํ‚ค๋กœ ๋“ฑ๋ก์„ํ•ด์„œ ์ง„ํ–‰์ด ๋˜์ง€์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค.

ํ•ด๊ฒฐ๋ฒ•

1.๊ธ‰ํ•˜๊ฒŒ ํ•˜์ง€์•Š๊ณ  ์ฒœ์ฒœํžˆ ์ง„ํ–‰ํ•˜๋ฉด ๋ฌธ์ œ์—†๋Š” ์ผ์ด๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ

์„œ๋ฒ„์—์„œ ๊นƒ๋žฉ์†Œ์Šค๋ฅผ ์ธ์ฆ์ •๋ณด ์ž…๋ ฅ์—†์ด ์†Œ์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ ์šฉํ•ด๋ณด์•˜๋‹ค.

๋‹ค์Œ์—๋Š” Gitlab CI CD๋ฅผ ์ ์šฉํ•ด๋ด์•ผ๊ฒ ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
LIST

'IT > Etc' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

React + PWA Tutorial (notifications,push)  (0) 2023.06.21
ESLint + Prettier + React ํ™˜๊ฒฝ ์„ค์ •  (2) 2023.01.11