AWS VPC Bastion Host
'Bastion Host'λ 'Public Subnet'μμ 'Private Subnet' 리μμ€μ μ κ·ΌνκΈ° μν λ리μΈμ μν μ μννλ€.
κ° 'subnet'μ ec2λ₯Ό μμ±ν΄μ£Όκ³ 'Private Security Group'μ sshμ icmpλ₯Ό 'Public Security Group'λ§ νμ©ν΄μ€λ€.
'Private Subnet'μ 리μμ€μ μ μνκΈ° μν κ°μ₯ λ§μ΄ μλ €μ§ λ°©λ²μΌλ‘λ Putty νλ‘κ·Έλ¨μ μ΄μ©ν λ°©λ²μ΄λ€. νμ§λ§ κ·Έ μΈμλ μ μν μ μλ λ°©λ²μ λ€μνλ€.
κ°μ₯ λ¨Όμ 'Private Subnet'μ μμ±ν ec2μ pem ν€λ₯Ό 'scp' νΉμ 'ftp'λ₯Ό μ΄μ©νμ¬ 'Bastion Host'λ‘ λκ²¨μ£Όμ΄ μ μνλ λ°©λ²μ΄ μλ€. μ§μ μλλ ν΄λ³΄μ§ μμμ§λ§ κ°μ₯ λ¨μν λ°©λ²μ΄λΌκ³ μκ°νλ€.
νμ§λ§ μ΄ λ°©λ²μ κ°μΈ ν€λ₯Ό λ ΈμΆμν¬ μ μλ μν μμκ° μκΈ° λλ¬Έμ μΆμ²νλ λ°©λ²μ μλλ€.
scp -i maketheworldwise.pem private.pem ec2-user@[Private Subnet Instance IP]:~/
λ€μμΌλ‘λ 'ssh-agent'λ₯Ό μ΄μ©ν λ°©λ²μ΄ μλ€. μ¬μ©μμ μμ΄λ ν€μ ν΄λΉ μνΈλ₯Ό μΆμ ν΄μ£Όλ νλ‘κ·Έλ¨μΈ 'ssh-agent'λ₯Ό μ¬μ©νλ©΄ μ¬μ©μκ° 'Bastion Host'μ κ°μΈ ν€λ₯Ό μ μ₯νμ§ μμλ 'Bastion Host'μμ λ€λ₯Έ μΈμ€ν΄μ€λ‘ μ°κ²°ν μ μλ€.
# ssh ν€ μΆκ°
ssh-add [pem νμΌ]
# ssh ν€ λͺ¨λ μμ
ssh-add -D
# ssh ν€ μ λ¬
ssh-A ec2-user@[Bastion Host Public IP]
# Bastion Hostμμ Private Subnet μΈμ€ν΄μ€ μ μ
ssh ec2-user@[Private Subnet Instance IP]
λ§μ§λ§μΌλ‘ 'Bastion Host'μ μ μν λ μ€μ νλ λ°©λ²μ΄λ€.
ssh -i maketheworldwise.pem -L 22:[Private Subnet Instance IP]:22 ec2-user@[Bastion Host Public IP]
μμ λ΄μ©λλ‘ 'Bastion Host'μ μ μμ΄ λμλ€λ©΄ μ μν μνμμ μλ‘μ΄ ν°λ―Έλμ μ΄μ΄ 'Private Subnet' 리μμ€μ μ μνλ©΄ λλ€.
ssh -i maketheworldwise.pem ec2-user@localhost
λ§μ½ μ μμ΄ μλλ€λ©΄ κ°μ₯ μμ¬λλ 2κ°μ§λ₯Ό νμΈν΄λ³΄λ©΄ λλ€.
μ¬λ¬λ² μ½μ§μ ν΄λ³Έ κ²°κ³Ό νλνλ λ³κ²½ν΄κ°λ©΄μ μ°Ύμκ°λ κ² λ³΄λ€ 'NACL'κ³Ό 'Security Group'μ μΈλ°μ΄λ, μμλ°μ΄λ λͺ¨λ 'λͺ¨λ νΈλν½'μ νμ©μν€κ³ μλλμ§ νμΈ νμ νμν λ΄μ©λ€μ μ²μ²ν μ μ©ν΄κ°λ κ²μ΄ μ½μ§μ μ€μΌ μ μλ κ³Όμ μ΄λΌκ³ μκ°νλ€.
'Bastion Host'λ λλΆλΆ 'Private Subnet'μ μ μνκΈ° μν μ ν μλ² μ©λλ‘λ§ μ¬μ©νλ€. 'Bastion Host'λ₯Ό κ±°μ³μΌμ§λ§ λ΄λΆ μλ²λ‘ μ κ·Όν μ μκΈ° λλ¬Έμ ν΄λΉ ν΅λ‘λ§ λͺ¨λν°λ§μ ν΄λ λ΄λΆ μλ²λ‘ κ°λ νΈλν½ λλΆλΆμ λͺ¨λν°λ§μ΄ κ°λ₯νμ¬ κ΄λ¦¬μ λ‘κΉ μ μ€μνλ₯Ό ν μ μλ μ΄μ μ κ°μ§κ³ μλ€. (AWS Session Manager)