Bastion / SSH Tunneling
Private EC2 ์์ฑ ํ ์ธ๋ถ ์ ๊ทผ ํ์ฉ: Inbound ์ํ Bastion ์ค์
1. PEM ํ์ผ์ Private Key
- AWS์์ PEM ํ์ผ์ Private Key๋ค. SSH ํด๋ผ์ด์ธํธ๋ฅผํตํด ์๊ฒฉ ์๋ฒ(EC2 ์ธ์คํด์ค)์ ์ ๊ทผํ ๋, Private Key๊ฐ ํ์ํ๋ค.
- AWS ์ฝ์์์ ์์ฑ๋ PEM ํ์ผ์ Private Key๋ก, ์ด๋ฅผ ํตํด EC2 ์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์๋ค. Public Key๋ AWS๊ฐ EC2 ์์ฑ ์ ๋ด๋ถ์ ์ผ๋ก ์ฃผ์ ๋๋ฉฐ, ์ฌ์ฉ์๋ ์ด๋ฅผ ๋ณผ ์ ์๋ค.
2. SSH ์ ์ ์ Key Pair ์ฌ์ฉ
- SSH ํด๋ผ์ด์ธํธ๋ ์๊ฒฉ ์๋ฒ์ ์ ์ํ ๋ Key Pair ์ค Private Key๋ฅผ ์ฌ์ฉํ๋ค. ํด๋ผ์ด์ธํธ๋ PEM ํ์ผ(Private Key)์ ์ฌ์ฉํด ์๋ฒ์ ์ธ์ฆ์ ์์ฒญํ๋ค.
- EC2 ์ธ์คํด์ค๋ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ฐ์ Private Key๋ฅผ Public Key์ ๋น๊ตํ์ฌ ์ธ์ฆํ๋ค. ์ด Public Key๋ EC2 ์ธ์คํด์ค์ ์๋์ผ๋ก ์ฃผ์ ๋ ์ํ์ด๋ค.
3. OpenSSL์ ํตํ RSA Key Pair ์์ฑ
- OpenSSL ๋ฑ์ ์ฌ์ฉํด RSA Key Pair๋ฅผ ์์ฑํ๋ฉด, Pulbic Key์ Private Key๊ฐ ๊ฐ๊ฐ .pub๊ณผ .pemํ์ผ๋ก ์์ฑ๋๋ค.
- AWS์์๋ Private Key ํ์ผ๋ง ์ ๊ณตํ๋ฉฐ, Public Key๋ ์ฌ์ฉ์๊ฐ ๋ณผ ์ ์๋๋ก ๊ด๋ฆฌ๋๋ค. Public Key๋ EC2 ์ธ์คํด์ค์ ์๋์ผ๋ก ์ฃผ์ ๋์ด ์ฌ์ฉ๋๋ค.
1. Bastion EC2๋ฅผ ์ด์ด์ค Key Pair(.pem ํค) ์์ฑ
1. EC2 ์ฝ ์ ๋ด ํคํ์ด ๋ฉ๋ด์์ ํคํ์ด๋ฅผ ์์ฑํ๋ค. (local-to-bastion-test)
2. local-to-bastion-test Key์์ฑ๊ณผ ๋์์ pemํ์ผ ๋ค์ด๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
2. Bastion ํธ์คํธ ์ญํ ์ ํ EC2 (Public Subnet) ์ธ์คํด์ค ๋ง๋ค๊ธฐ
1. ์ธ์คํด์ค ์ด๋ฆ (public-bastion-test) ์ค์
2. ์ธ์คํด์ค ์ ํ (t2.micro) ์ค์
3. ์์์ ๋ง๋ Key Pair(local-to-bastion-test)๋ก Key Pair ์ค์
4. VPC(sanghyun-vpc) ์ ํ
5. ์๋ธ๋ท(2a) ์ค์
6. ํผ๋ธ๋ฆญ IP ์๋ ํ ๋น ํ์ฑํ
7. ์ธ์คํด์ค ์์ฑ ํ์ธ
- SG(Security Group)์ ๋ชจ๋ IP์ ๋ํด `0.0.0.0/0` SSH 22๋ฒ ํฌํธ๊ฐ ์ด๋ ค์๋ ๊ฒ ํ์ธ
8. AWS Console์์ EC2 ์ธ์คํด์ค ์ฐ๊ฒฐ ์ฑ๊ณต ์ฌ๋ถ ํ์ธ
9. ๋ก์ปฌ์์ ์ ์ ํ ์คํธ ํ์ธํ๊ธฐ
- ๋ช ๋ น์ด
ssh -i .ssh/KeyPairName(local-to-bastion-test).pem ec2-user@BastionHostIP(54.180.146.92)
- MAC์์ ํด๋น ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ฉด ๊ถํ ๊ด๋ จ ์ค๋ฅ ๋ฉ์ธ์ง๊ฐ ๋ฐ ๊ฒ์ด๋ค.
- ํด๊ฒฐ๋ฐฉ๋ฒ: PEM ํ์ผ์ ๊ถํ์ ์ค์ ํด์ค์ผํ๋ค.
chmod 400 local-to-bastion-test.pem
- ๊ถํ ์ค์ ํ ๋ค์ ์ฐ๊ฒฐ์ ์๋ํ๋ฉด ์ฐ๊ฒฐ์ด ์ ์์ ์์ ํ์ธํ ์ ์๋ค.
3. ์ถํ Local์์ Server EC2(Private ์๋ธ๋ท ๋ด ์กด์ฌ)์ ์ ๊ทผํ๊ธฐ ์ํ Key Pair(.pemํค ์์ฑ)
1. ์์ ๊ณผ ๋์ผํ๊ฒ ํคํ์ด๋ฅผ ์์ฑํ๋ค. (local-to-priavte-test)
- ์์ฑ๊ณผ ๋์์ pem ํ์ผ ๋ค์ด๋ก๋ ๋๋ ๊ฒ ํ์ธ
4. EC2(Private Subnet) ํ ์คํธ ์ธ์คํด์ค ๋ง๋ค๊ธฐ
1. ์ธ์คํด์ค ์ด๋ฆ(private-instance-test) ์ค์
2. ์ธ์คํด์ค ์ ํ(t2.micro) ์ค์
3. ์์ ๋ง๋ Key Pair(local-to-private-test)๋ก Key Pair ์ค์
4. VPC(sanghyun-vpc) ์ ํ
5. ์๋ธ๋ท(private-subnet-test1, ๊ฐ์ฉ ์์ญ 2a) ์ค์
6. ํผ๋ธ๋ฆญ IP ์๋ ํ ๋น ํ์ฑํ
7. ์ธ๋ฐ์ด๋ ๋ณด์ ๊ท์น → ์์ค ์ ํ "์ฌ์ฉ์ ์ง์ "
8. SG๋ฅผ ์์ ์๋ง๋ Bastion EC2์ SG๋ก ์ค์ ํ๋ค.
9. ์ค๋ช ์ ๋ค์๊ณผ ๊ฐ์ด ๋ช ์์ ์ผ๋ก ์ ์ผ๋ฉด ์ถํ์ ํท๊ฐ๋ฆฌ์ง ์๋๋ค. ("Allow SSH from the Bastion Host")
10. ์์ฑ๋ ์ธ์คํด์ค ํ์ธ
11. bastion ec2 ์คํ ํ `ssh ec2-user@{target-private-ip}` ๋ช ๋ น์ด๋ฅผ ํตํด Private EC2์ SSH ์ ๊ทผ์ ์๋ํ๋ค.
- ์๊ธฐ ์ด๋ฏธ์ง์์๋ `ssh ec2-user@10.0.58.101`๋ก ์ํํ๋ค.
- Private IP๋ ํ๊ธฐ ์ด๋ฏธ์ง ๊ฐ์ ํด๋นํ๋ค. VPC(Private) ๋ด์์ ํ ๋น๋ IP
- ํ์ง๋ง ์ด๋ฏธ์ง์ ๊ฐ์ด SSH ์ ๊ทผ์ ์คํจํ๋ค.
- Private EC2์ SSH ์ ๊ทผ์ ์ํด์๋ Key Pair(.pem ํค)๊ฐ ํ์ํ๋ค.
5. Bastion EC2 ์ธ์คํด์ค ๋ด Private EC2์ SSH ์ ์์ ์ํ .pem ํค ์ค์ ํ ์ ์ ์ฑ๊ณต ํ์ธํ๊ธฐ
1. Bastion EC2 ํฐ๋ฏธ๋์์ `nano bastion-to-private-test.pem`: (ํ์ผ๋ช ์ ์๊ด์๋ค) ์๋ํฐ๋ฅผ ์ฐ๋ค.
2. `pbcopy < local-to-private-test.pem`: ์์ ์ ์์ฑํ๊ณ ๋ก์ปฌ์ ์ ์ฅํ๋ Key Pair(local-to-private-test.pem)์ ๊ฐ์ ๋ณต์ฌํ๋ค.
3. ๋ณต์ฌํ ๊ฐ์ ์๋ํฐ์ ๋ถ์ฌ๋ฃ๋๋ค.
- `chmod 400 bastion-to-private.pem`: ์ฝ๊ธฐ ๊ถํ์ ๋ถ์ฌํ์ฌ SSH ์ ์ ์ ํด๋น ํค๋ฅผ ์ฝ์ ์ ์๋๋ก ์ค์ ํ๋ค.
4. SSH ์ ๊ทผ ์๋ ์ฑ๊ณต ํ์ธ
6. SSH Tunneling์ผ๋ก ์ง๊ธ ๋ด ์ปดํจํฐ ๋ก์ปฌ์์ Bastion์ ํตํด Private EC2์ SSH ์ ์ํด๋ณด๊ธฐÍ
1. Bastion EC2์ SSH Tunneling์ ์ฐ๋ค. → SSH ํต๋ก๋ฅผ ์ํ ํฐ๋์ ์ด์ด๋๋ค.
- SSH ํต๋ก๋ฅผ ์ํ ํฐ๋์ ์ด์ด๋๋ ์์ ์ด๊ธฐ์ ์ ํฐ๋ฏธ๋์ ์๋ ๋ช ๋ น์ด๋ฅผ ์คํํ์ฑ ๋ ๋ฌ์ผํ๋ค.
ssh -i "local-to-bastion.pem" -N -L 33322:{target-private-ip}:22 ec2-user@{bastion-host-public-ip}
2. ์ ํฐ๋ฏธ๋์ ํ๋ ๋์ด๊ณ ์์ ์ด์ด๋์๋ค ํฐ๋์ ํตํด Private EC2์ ์ง์ SSH ๋ช ๋ น์ด๋ฅผ ์ํ
- `.pem`ํค๋ 2๊ฐ๊ฐ ์์. ํผ์ฉ ์ฃผ์
- ํฐ๋์ด ์ด๋ฆฌ๋ ์๊ฐ Private EC2๋ ๋ด ๋ก์ปฌ์์ ์ ๊ทผ ๊ฐ๋ฅํ ํฌํธ๊ฐ ๋๊ธฐ์ 33322 ํฌํธ์ localhost๋ก ์ ์ํด์ผํ๋ค๋ ์ ์ ๋
์ด๋ฏธ์ง์์ ํ์ธํ๋ฐ์ ๊ฐ์ด ์ฐ๊ฒฐ์ ์ฑ๊ณต์ ํ๋ค. ํ์ง๋ง `ping google.com` ๋ช ๋ น์ด๋ฅผ ํตํด ์ธ๋ถ์ ์์ฒญ์ ์๋ํ๋ฉด ์ ์์ ์ผ๋ก ์ด๋ค์ง์ง ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์ด๋ Private EC2 ์ธ๋ถ ์ ๊ทผ์ ํ์ฉํ๋๋ก ํด์ค์ผํ๋ค.(NAT Instance)
๐ ๋ค์ ํฌ์คํ ์์ Private EC2์ ์ธ๋ถ์ ๊ทผ์ ํ์ฉํ๋๋ก ์ค์ ํ๋ ๊ฒ(Outbound ์ํ NAT Instance)์ ๋ค๋ค๋ณผ ์์ ์ด๋ค.
โน๏ธ ์ฐธ๊ณ
[ASAC 6๊ธฐ ๊ฐ์์๋ฃ]
'๐ปDEV-STUDY > AWS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[AWS] VPC ๋ฐ ์๋ธ๋ท ์ค์ & EC2 ์ธ๋ถ ์ ๊ทผ ํ์ฉ #3 (0) | 2024.10.11 |
---|---|
[AWS] VPC ๋ฐ ์๋ธ๋ท ์ค์ & EC2 ์ธ๋ถ ์ ๊ทผ ํ์ฉ #1 (0) | 2024.10.09 |