SSH
Secure Shell : 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜, 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령 실행할 수 o
클라이언트와 서버는 각각의 키 보유, 그 키를 통해 연결 상대를 인증하고 안전하게 데이터를 주고받음
키 생성 방식
- 비대칭키 방식
- 최초 접속 시 사용
- 클라이언트나 서버가 key pair(공개 키, 개인 키) 생성 → 서버는 공개 키를 받아 이 키로 만들어진 랜덤한 값 생성 → 클라이언트는 이 값을 받아 개인 키를 이용해 풀고 그 값을 서버에 전송 → 서버는 처음 값과 전송받은 값 비교 → 같으면 올바른 개인 키 보유하는 것으로 판단해 접속 허용
- 공개 키는 누구에게 공개되어도 상관 x, but 개인 키는 유출되어서는 x ⇒ 개인 키가 서버-클라이언트 관계를 증명하는 수단, 공개 키에서 나온 값은 개인 키로만 풀이 o
공개 키 | 개인 키 |
공개되어도 상관 x | 유출되면 x |
암호화 o 복호화 x | 복호화 o |
- 대칭키 방식
- 정보를 주고받을 때 사용
- 클라이언트나 서버가 하나의 대칭 키 생성 → 이 키를 이용해 정보 암호화 → 정보를 받은 쪽은 대칭 키로 풀이 후 정보 습득 → 정보 교환이 완료되면 사용했던 대칭 키는 폐기
- 접속할 때마다 새로운 대칭키 생성
Port Forwarding
특정 포트로 들어오는 데이터를 다른 포트로 바꿔서 재전송
외부 IP:포트번호 - 내부IP:포트번호 연결
별도의 설정 없이 외부 IP가 접속을 시도할 때 내부에 어떤 프로세스에 연결할지 알 수 없기 때문에 접근이 불가능
외부 IP : 내 PC에서 하는 작업 등이 온라인 상에서 사용되고 표현되는 IP
내부 IP : 내 PC가 현재 사용하고 내부적으로 표현되는 할당받은 IP
💡 네트워크 상에서 다른 PC에 접속하기 위해서는 PC를 가리키는 주소를 알아야 함 그 특정 PC의 주소를 나타내는 체계를 IP Address라고 함 000.000.000.000:3000 ————IP——— —Port— 특정 서버에 접속하려면 URL이나 IP 사용 → 그를 토대로 해당 서버가 있는 컴퓨터로 찾아감 → but 대부분의 컴퓨터에서는 여러 개의 프로그램이 돌아가는 중 → 그 많은 프로그램들 중 접속하려는 프로그램이 어떤 것인지 컴퓨터에게 알려주는 것이 Port
- IP
- Internet Protocol : 인터넷 상에서 사용하는 주소체계
- 인터넷에 연결되는 모든 PC는 IP 주소체계를 따라 네 덩이의 숫자로 구분 ⇒ IPv4
- 10.x.x.x, 172.16~31.x.x, 192.168.x.x ⇒ 회사나 개인이 별도구축하는 사설 네트워크에서만 이용, 공인 IP는 유일한 값이기 때문에 외부 네트워크가 필요하지 않은 장비에 대해서는 사설 네트워크 구축, 사설 아이피 대역은 여기 저기서 사용하기 때문에 공인 아이피처럼 특정한 기기를 가리키지 x
- Port
- IP 내에서 애플리케이션 상호 구분(프로세스 구분)을 위해 사용하는 번호
- IP 주소가 가리키는 PC에 접속할 수 있는 통로를 의미
- 0 ~ 65535, 이 중 0 ~ 1024까지는 이미 정해져있음
- 이미 사용 중인 포트는 중복 사용 x </aside>
Host IP : 127.0.0.1 (localhost, 자기자신, 루프백)
Guest IP : hostname -I (10.0.2.15)
Host Port : 4242
Guest Port : 4242
ssh <username>@127.0.0.1 -p 4242 # ssh <사용자 이름>@<HOST_IP> -p HOST_PORT
guest 비밀번호 입력
exit //연결 종료
127.0.0.1 : 로컬 내에 서버-클라이언트 구조, 목적지 IP를 이 주소로 설정하게 되면 외부로 전송하지 않고 자기 자신이 받은 것 처럼 처리
호스트 포트 : ssh에 연결할 임의 port
- ip를 확인하고 싶다? ipconfig getifaddr en0 or ifconfig en0(en0 : 무선인터넷)
❓ TCP vs UDP TCP(Transmission Control Protocol)
- 인터넷상에서 데이터를 메세지의 형태로 보내기 위해 IP와 함께 사용하는 프로토콜
- IP가 데이터의 전송을 저리한다면 TCP는 패킷 추적 및 관리 UDP(User Datagram Protocol)
- 데이터를 데이터그램(독립적인 관계를 지니는 패킷) 단위로 처리하는 프로토콜
TCP:
- 순서대로 수신 o
UDP:
- 순서대로 수신 불가능할 수 o
TCP | UDP |
- 연결형 서비스 - 3-way handshaking(3번의 요청/응답) 과정을 통해 연결 설정 → 4-way handshaking을 통해 해제 - 흐름 제어 : 데이터처리 속도 조절 ⇒ 수신자의 버퍼 오버플로우 방지 - 혼잡 제어 : 네트워크 내의 패킷 수가 넘치게 증가하지 않도록 방지 - 연속성보다 신뢰성 - UDP보다 속도 ⬇️ - Full-Duplex : 양방향 동시 전송 o - Point to Point : 각 연결이 정확히 2개의 종단점 보유 |
- 비연결형 서비스로 데이터그램 방식 제공 - 정보를 주고 받을 때 신호절차 거치지 x - UDP헤더의 CheckSum 필드를 통해 최소한의 오류만 검출 - 신뢰성보다 연속성 - TCP보다 속도 ⬆️ |
❓ 패킷? 인터넷 내에서 데이터를 보내기 위한 경로배정(라우팅)을 효율적으로 하기 위해 데이터를 여러 개의 조각들로 나누어 전송 ⇒ 그 나눠진 조각이 패킷
❓ host : 연결할 IP (MAC OS) guest : 연결될 IP (VM)
참고블로그
https://ybdeveloper.tistory.com/95
https://library.gabia.com/contents/infrahosting/9002/
https://mangkyu.tistory.com/15
'42seoul' 카테고리의 다른 글
[born2beroot] LVM (0) | 2023.02.28 |
---|---|
[born2beroot] UFW (0) | 2023.02.24 |
[born2beroot] Apparmor (0) | 2023.02.22 |
[born2beroot] Sudo, tty (1) | 2023.02.21 |
[born2beroot] 가상머신(Virtual Machine) (0) | 2023.02.19 |
댓글