SHH-keys.md
๐กSSH Key, Secure Shell ๐
โ๏ธ SSH Key์ ๋ํด ์ ๋ฆฌํฉ๋๋ค.
SSH Key๋?
- SHH key๋ SSH(Secure Shell) ๋คํธ์ํฌ ํ๋กํ ์ฝ์ ์ฌ์ฉํ์ฌ, ์๋ฒ์ ์๊ฒฉ์ผ๋ก ์ ์ํ ๋ ์ฌ์ฉํ๋ ์ธ์ฆ๋ฐฉ์์ ๋๋ค.
- SSH Key๋ **๊ณต๊ฐ ํค(Public key)**์ ๊ฐ์ธ ํค(Private Key) ๋ ๊ฐ์ ํ์ผ ์์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ณต๊ฐ ํค๋ SSH ์๋ฒ์ ๋ฑ๋ก๋์ด, SSH client๊ฐ ์ ์ํ ๋ ํด๋น ๊ณต๊ฐํค์ ์ผ์นํ๋ ๊ฐ์ธ ํค๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ํ์ธํ์ฌ ์ธ์ฆํฉ๋๋ค. (๊ฐ์ธ ํค๋ฅผ ๋ถ์คํ๊ฑฐ๋, ๊ฐ์ธ ํค๊ฐ ๋ ธ์ถ๋์ง ์๋๋ก ํฉ๋๋ค.)
SHH Key ์์ฑํ๊ธฐ โณ
SSH-Keygen
ssh - keygen;
- ํฐ๋ฏธ๋์
ssh-keygen
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต๊ฐํค์ ๊ฐ์ธํค๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.- ๊ณต๊ฐ ํค๋ SSH ์๋ฒ์ ๋ฑ๋กํฉ๋๋ค.
authorized_keys
ํ์ผ์ ๊ณต๊ฐ ํค๋ฅผ ์ถ๊ฐํฉ๋๋ค.- ex) ๊ฒฝ๋ก
~/.ssh/authorized_keys
- ex) ๊ฒฝ๋ก
- SSH ํด๋ผ์ด์ธํธ์์ ๊ฐ์ธ ํค๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ์ ์ ์ํฉ๋๋ค.
- ๊ณต๊ฐ ํค๋ SSH ์๋ฒ์ ๋ฑ๋กํฉ๋๋ค.
- ๊ธฐ๋ณธ ์์ฑ๋๋ ํ์ผ๋ช
- ๊ณต๊ฐ ํค: id_rsa.pub
- ๊ฐ์ธ ํค: id_rsa
- ํค ์ด๋ฆ์ ์ง์ ํ๋ ๊ฒฝ์ฐ, ํค ์ด๋ฆ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
ssh -i
ssh -i <path>
๋ช ๋ น์ด๋ SSH ํด๋ผ์ด์ธํธ์์ ์ธ์ฆ์ ์ํด ์ฌ์ฉํ ๊ฐ์ธ ํค ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๋ ์ต์ ์ ๋๋ค.- ๊ฐ์ธํค๋ ๋ณดํต
~/.ssh/id_rsa
๋๋~/.ssh/id_dsa
์ ๊ฐ์ด ํน์ ํ ํ์ผ ์ด๋ฆ์ผ๋ก ์ ์ฅ๋ฉ๋๋ค. ํ์ง๋ง, ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ธํค๋ฅผ ์ฌ์ฉํด์ผ ํ ๊ฒฝ์ฐ,ssh -i <path>
๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ธํค ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.ssh -i ~/.ssh/example.pem user@example.com
~/.shh ํด๋ ๐
SSH Authorized keys
๐
~/.ssh/authorized_keys
- SSH client๊ฐ SSH ์๋ฒ์ ์ ์ํ ๋, ์ธ์ฆ์ ์ฌ์ฉ๋๋
๊ณต๊ฐ ํค
๋ฅผ์ ์ฅ
ํ๋ ํ์ผ์ ๋๋ค.- SHH ์๋ฒ๋ ํด๋น ์ฌ์ฉ์์ ๊ณต๊ฐ ํค๋ฅผ authorized_keys ํ์ผ์ ์ ์ฅํ๊ณ , ์๋ฒ์ ๋ฑ๋ก๋ ๊ณต๊ฐ ํค์ ํด๋ผ์ด์ธํธ์ ๊ฐ์ธ ํค๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์ฆ์ ์ํํฉ๋๋ค.
- authorized_keys ํ์ผ์ ๋ค์์ ๊ณต๊ฐ ํค๋ฅผ ํฌํจํ ์ ์์ต๋๋ค.
- ๊ฐ ๊ณต๊ฐํค๋ ํ ์ค์ฉ ์์ฑ๋ฉ๋๋ค.
Known_hosts
๐
~/.shh/known_hosts
- SSH client๊ฐ ์ด์ ์ ์ ์ํ๋ SSH ์๋ฒ์ ํธ์คํธ ํค ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ํ์ผ์ ๋๋ค.
- SSH ํด๋ผ์ด์ธํธ๊ฐ SSH ์๋ฒ์ ์ ์ํ ๋, ํธ์คํธ ํค์ ๋ฌด๊ฒฐ์ฑ์ ๊ฒ์ฆํ๊ธฐ ์ํด ์ฌ์ฉ๋ฉ๋๋ค.
- SSH ํด๋ผ์ด์ธํธ๊ฐ ์๋์ผ๋ก ๊ด๋ฆฌํ๊ธฐ ๋๋ฌธ์, ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ง์ ์์ ํ ํ์๊ฐ ์์ต๋๋ค.
- SSH ์๋ฒ์ IP ์ฃผ์๋ ๋๋ฉ์ธ ์ด๋ฆ์ด ๋ณ๊ฒฝ๋์์ ๋, known_hosts ํ์ผ์์ ํธ์คํธ ํค ์ ๋ณด๋ฅผ ์ญ์ ํ๊ณ ๋ค์ ์ ์์ ์๋ํด์ผ ํฉ๋๋ค.
ํ๊ฑฐ ํ๋ฆฐํธ Fingerprint
- ํ๊ฑฐํ๋ฆฐํธ FingerPirnt๋ ๊ณต๊ฐํค ์ํธํ ๊ธฐ์ ์์
๊ณต๊ฐ ํค์ ๋ฌด๊ฒฐ์ฑ์ ๊ฒ์ฆํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ฐ
์ ๋๋ค. ๊ณต๊ฐ ํค์ ๋ด์ฉ์ ํด์ ํจ์๋ฅผ ํตํด ์ถ์ฝํ 16์ง์์ ๊ฐ์ ๋๋ค.9a:9c:7e:8e:22:3a:f3:3b:7d:32:8d:53:5b:e9:cf:7c
- SSH ์๋ฒ์ ํ๊ฑฐํ๋ฆฐํธ๋ฅผ ํ์ธํจ์ผ๋ก์จ, ํด๋ผ์ด์ธํธ๋ SSH ์๋ฒ์ ํธ์คํธ ํค๊ฐ ์ ํจํ๊ณ ๋ณ๊ฒฝ๋์ง ์์์์ ํ์ธํ ์ ์์ต๋๋ค.
SSH config
๐
~/.shh/config
-
SSH config์ SSH client์์ ์ฌ์ฉ๋๋ ์ค์ ํ์ผ์ ๋๋ค.
hostname
: ์๋ฒ์ ํธ์คํธ ์ด๋ฆ์ด๋ IP ์ฃผ์setting
: ์ค์ ์ต์
Host <hostname> <setting> <value> <setting> <value> ... Host <hostname> <setting> <value> <setting> <value> ...
| ์ค์ ์ต์ | ์ค๋ช | | ------------ | ------------------------------------------------------------------------------- | | User | SSH ์ฐ๊ฒฐ์ ์ฌ์ฉ๋๋ ์ฌ์ฉ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. | | HostName | SSH ์ฐ๊ฒฐ์ ์ฌ์ฉ๋๋ ํธ์คํธ ์ด๋ฆ ๋๋ IP ์ฃผ์๋ฅผ ์ง์ ํฉ๋๋ค. | | Port | SSH ์๋ฒ์ ํฌํธ ๋ฒํธ๋ฅผ ์ง์ ํฉ๋๋ค. | | IdentityFile | ์ฌ์ฉํ ๊ฐ์ธํค ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ง์ ํฉ๋๋ค. | | Compression | SSH ์ฐ๊ฒฐ์์ ์์ถ์ ์ฌ์ฉํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํฉ๋๋ค. | | ForwardX11 | SSH ์ฐ๊ฒฐ์์ X11 ์ ์ก์ ์ฌ์ฉํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํฉ๋๋ค. | | ProxyCommand | SSH ์ฐ๊ฒฐ์์ ํ๋ก์ ์๋ฒ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, ํ๋ก์ ์๋ฒ์ ๋ํ ๋ช ๋ น์ด๋ฅผ ์ง์ ํฉ๋๋ค. |
SHH Forwarding ๐
SSH Forwarding์ด๋?
SSH forwarding
์ SSH ์ฐ๊ฒฐ์ ํตํด ๋ค๋ฅธ ํธ์คํธ์์ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ์์ ํ๊ฒ ์ ๋ฌํ๋ ๊ธฐ๋ฅ์ ๋งํฉ๋๋ค. ๋ก์ปฌ ๋จธ์ ์์ ์๋ํ๋ ํ๋ก๊ทธ๋จ์ด ์๊ฒฉ ์๋ฒ์ ์ฐ๊ฒฐ๋์ด ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ ์ ์์ผ๋ฉฐ, ๋ฐ๋๋ก ์๊ฒฉ ์๋ฒ์์ ์๋ํ๋ ํ๋ก๊ทธ๋จ์ด ๋ก์ปฌ ๋จธ์ ์ ์ฐ๊ฒฐ๋์ด ์๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ ์ ์์ต๋๋ค.- SSH key๋ฅผ ์ฌ์ฉํ์ฌ SSH ์๋ฒ์ ์์ ํ๊ฒ ์ ์ํ ํ, SSH forwarding์ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ๋จธ์ ์์ ์คํ ์ค์ธ ํ๋ก๊ทธ๋จ์ด ์๊ฒฉ ์๋ฒ์ ์ฐ๊ฒฐํ ์ ์๋๋ก ์ ๋ฌํ ์ ์์ต๋๋ค.
SSH Forwarding ๋ช ๋ น์ด
eval "$(ssh-agent -s)" ()
ssh-add -k
ssh -o ForwardAgent=yes ubuntu@<ip
1. eval "$(ssh-agent -s)" ()
โ๏ธ SSH agent
SSH key๋ฅผ ๋ณดํธํ๊ณ , SSH ์ฐ๊ฒฐ ์ ๋งค๋ฒ SSH key๋ฅผ ์ ๋ ฅํ์ง ์์๋ ์ธ์ฆ์ ์ํํ ์ ์๋๋ก ๋์์ฃผ๋ ํ๋ก๊ทธ๋จ์ ๋๋ค.
๋ณดํต SSH key๋ฅผ ์ฌ์ฉํ์ฌ ์๊ฒฉ ์๋ฒ์ ์ ์ํ๋ ค๋ฉด ๋งค๋ฒ SSH key์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํด์ผ ํฉ๋๋ค. ํ์ง๋ง ssh-agent๋ฅผ ์ฌ์ฉํ๋ฉด SSH key๋ฅผ ํ๋ฒ๋ง ์ ๋ ฅํ๊ณ , ssh-agent๊ฐ ์ด๋ฅผ ๊ธฐ์ตํด๋์ด ๋งค๋ฒ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํ์ง ์๊ณ ๋ SSH ์ธ์ฆ์ ์ํํ ์ ์์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ก๊ทธ์ธ ์ ์คํ๋๋ฉฐ, SSH key์ ๋น๋ฐ๋ฒํธ๋ฅผ ํ๋ฒ๋ง ์ ๋ ฅํ๋ฉด ssh-agent๊ฐ ์ด๋ฅผ ๊ธฐ์ตํด๋๊ณ ๋ค๋ฅธ SSH ์ฐ๊ฒฐ์์ ์ด๋ฅผ ์ฌ์ฉํ ์ ์๋๋ก ํฉ๋๋ค.
eval "$(ssh-agent -s)" ()
๋ช ๋ น์ด๋ก ssh-agent๋ฅผ ์คํํฉ๋๋ค.- ssh-agent๊ฐ ์คํ๋๊ณ , ssh-agent์ PID์ ํ๊ฒฝ ๋ณ์๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
2. ssh-add -k
- ์ด ๋ช
๋ น์ด๋ SSH key๋ฅผ ssh-agent์ ๋ฑ๋กํ๋ ๋ช
๋ น์ด์
๋๋ค.
-k
์ต์ ์ผ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์ ๋ SSH key๋ฅผ ssh-agent์ ๋ฑ๋กํฉ๋๋ค. (id_rsa)- ๋ค๋ฅธ ํค ์ต์ ๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
3. ssh -o ForwardAgent=yes ubuntu@
- SSH ์ฐ๊ฒฐ ์ ssh-agent๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํ๋ ๋ช
๋ น์ด์
๋๋ค.
- -o ForwardAgent=yes ์ต์ ์ SSH ์ฐ๊ฒฐ ์ forwad ssh-agent๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํฉ๋๋ค.
ubuntu@<ip>
๋ SSH ์ฐ๊ฒฐํ ์๋ฒ์ IP ์ฃผ์ ๋๋ ๋๋ฉ์ธ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
- SSH ์ฐ๊ฒฐ์ด ์ํ๋๋ฉฐ, SSH key๋ฅผ ์ ๋ ฅํ์ง ์๊ณ ๋ ์ธ์ฆ์ ์ํํ ์ ์์ต๋๋ค.
ssh ubuntu@์์ดํผ์ฃผ์
ssh ubuntu@172.26.15.xxx
- ํด๋น ๋ช ๋ น์ด๋ SSH ํด๋ผ์ด์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ IP ์ฃผ์๊ฐ 172.26.15.xxx์ธ ์๊ฒฉ ์๋ฒ์ ubuntu๋ผ๋ ์ฌ์ฉ์ ์ด๋ฆ์ผ๋ก ์ ์ํ๋ ๋ช ๋ น์ด์ ๋๋ค.
- ์ฌ๊ธฐ์
ssh
๋ SSH ํด๋ผ์ด์ธํธ๋ฅผ ์คํํ๋ ๋ช ๋ น์ด์ด๋ฉฐ,ubuntu
๋ ์ ์์ ์ฌ์ฉ๋ ์๊ฒฉ ์๋ฒ์ ์ฌ์ฉ์ ์ด๋ฆ์ด๊ณ ,172.26.15.xxx
๋ ์ ์ํ ์๊ฒฉ ์๋ฒ์ IP ์ฃผ์์ ๋๋ค.- IP ์ฃผ์๋ ๋๋ฉ์ธ์ผ๋ก๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ubuntu๋ lightsail ์๋ฒ๋ฅผ ๋ง๋ค์์ ๋ ์๋์ผ๋ก ์์ฑ๋์๋ ์๋ฒ ์ด๋ฆ์ ๋๋ค.
SSH Forwarding์ ์ฌ์ฉํ์ฌ ํด๊ฒฐํ ์ ์๋ ๋ณด์ ์ด์
1. ๋ถํ์ํ SSH key ๊ณต์ ๋ฅผ ๋ฐฉ์ง
- SSH forwarding์ ์ฌ์ฉํ๋ฉด ๋ก์ปฌ ์ปดํจํฐ์ ์ ์ฅ๋ SSH key๋ฅผ SSH ์๋ฒ๋ก ์ ์กํ์ง ์๊ณ ๋ ์ธ์ฆํ ์ ์์ต๋๋ค.
- ๋ค๋ฅธ ์ฌ์ฉ์์ SSH key๋ฅผ ๊ณต์ ํ์ง ์๊ณ , SSH ์ฐ๊ฒฐ์ ์ํํ ์ ์์ต๋๋ค.
2. ๋ถํ์ํ SSH port ์ด๋ฆผ ๋ฐฉ์ง
- SSH forwarding์ ์ฌ์ฉํ๋ฉด SSH ์๋ฒ์์ SSH ํด๋ผ์ด์ธํธ๋ก ์ฐ๊ฒฐ๋ ํฌํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ก์ปฌ ์ปดํจํฐ์์ ์๊ฒฉ ํธ์คํธ์ ์ ์ํ ์ ์์ต๋๋ค.
- SSH ์๋ฒ์์ ๋ก์ปฌ ์ปดํจํฐ๋ก SSH ์ฐ๊ฒฐ์ ์ด ํ์๊ฐ ์์ต๋๋ค.
3. ๋ถํ์ํ ๋ก๊ทธ์ธ ์๋๋ฅผ ๋ฐฉ์ง
- SSH ์๋ฒ์์ ๋ก๊ทธ์ธํ ํ์ ์์ด ๋ก์ปฌ ์ปดํจํฐ์์ ์๊ฒฉ ํธ์คํธ์ ์ง์ ๋ก๊ทธ์ธํ ์ ์์ต๋๋ค.
- ๋ก๊ทธ์ธ ์๋๊ฐ ๋ฐ์ํ์ง ์์ผ๋ฏ๋ก ๋ณด์ ์ํ์ ์ค์ผ ์ ์์ต๋๋ค.