ssh

유병수·2023년 4월 20일
0

CI/CD를 구축하면서 github action에서 ssh로 Ec2에 연결해서 docker image를 올렸었다. 포트번호를 잘못 설정해줘서 한참동안이나 고생했었는데, 문득 ssh가 뭔지도 자세히 모르고 해맸기 떄문에 짚고 넘어가려고 한다.

ssh 란?

시큐어 셀(Secure SHell, SSH)은 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해주는 응용 프로그램 또는 그 프로토콜을 가리킨다.네트워크 프로토콜 중 하나로 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해서 서로 통신을 할 때 보안적으로 안전하게 통신을 하기 위해 사용하는 프로토콜이다.

대표적인 사용 예

  1. 데이터 전송
  2. 원격제어
  1. 데이터 전송의 가장 큰 예로는 깃 허브가 있다. 깃허브는 원격 저장소로, 소스코드를 저장하거나 받을 수 있는데, push할때나 pull할때 ssh를 활용해 파일을 전송하게 된다.
  2. AWS와 같은 클라우드 서비스는 인스턴스 서버에 접속하여 해당 머신에 명령을 내리기 위해서 SSH을 통한 접속을 해야한다.
    ec2 ssh 연결 방법

그러면 생각해볼 점이 왜 ssh를 사용하냐는 점이다. ssh는 모든 데이터가 암호화 되어 전송되기 때문에 안전하기 때문에 많이 사용을 한다.

그렇다면 어떻게해서 암호화를 하고 통신을 할까?

SSH는 다른 컴퓨터와 통신할 때 일반적으로 사용하는 비밀번호 입력을 통한 접속을 하지 않는다.
기본적으로 SSH는 한 쌍의 Key를 통해 접속하려는 컴퓨터와 인증 과정을 거친다.

public key와 private key가 한 쌍으로 이루어져 있다. Public keys는 공개되어도 비교적 안전한 key이다. 메세지를 전송하기 전 public key를 통해서 암호화 하게 된다. public key로는 복호화는 불가능 하다. private key는 노출되어서는 안되는 key이다. 암호화된 메시지를 복호화 할 수 있다.

이러한 키를 통해 서로다른 컴퓨터와 통신을 하기 위해서는 먼서 Public Key를 통신하고 있는 컴퓨터에 복사하여 저장한다. 그리고 요청을 보내는 클라이언트 사이트 컴퓨터에 접속 요청을 할때 응답을 하는 서버 사이트 컴퓨터에 복사되어 정장된 Public Key와 클라이언트 사이트에 해당 Public Key와 쌍을 이루는 Private Key와 비교를 하여 서로 한 쌍의 Key인지 아닌지 검사한다.

이렇게 서로 관계를 맺고 있는 Key 라는 것이 증명되면 비로소 두 컴퓨터 사이에 암호화된 채널이 형성되어 key를 활용해 메시지를 암호화하고 복호화하며 데이터를 주고 받을 수 있게된다.

0개의 댓글