안녕하세요:)
오늘은 SSH에 대해 알아보도록 하겠습니다. SSH는 개발자나 서버 관련 일을 하게 된다면 쉽게 접하게 되는 일종의 도구인데, 서버같은 원격 컴퓨터에 안전하게 접속할 수 있게 해주는 기술입니다. 쉽게 말하면, 인터넷을 통해 다른 컴퓨터에 명령을 내리거나, 파일을 전송하는 방법인데, 중요한 건 SSH를 사용함으로써 보안이 잘 지켜진다는 점입니다.
조금 더 구체적으로 알아볼까요?
SSH를 접하게 되는 순간
보통 서버에 접속해서 뭔가를 할 때 처음 SSH를 접하게 될 거라고 생각합니다. 예를 들어, AWS나 네이버 클라우드와 같은 클라우드 서비스를 사용해서 서버를 만들면, 서버에 접속하려고 SSH를 사용하게 됩니다. 이때, 서버에 접속할 때 필요한 인증 파일을 받는데, 이걸 pem 파일이라고 부릅니다.
SSH란?
Secure Shell의 약자인 SSH는 '서버에 원격으로 접속하는데 보안을 유지하기 위한 방법'이라고 할 수 있습니다. 이걸 사용하면, 인터넷을 통해 서버에 접속해서 명령어를 실행하거나 파일을 전송할 수 있습니다. 인터넷은 누구나 볼 수 있게 공개된 공간이지만, SSH는 통신 내용을 암호화해서 함부로 내용을 훔쳐보지 못하게 합니다. 기본적으로 SSH는 22번 포트를 사용하여 통신합니다.
SSH 키 페어란?
SSH 키 페어는 공개키와 개인키, 두 가지로 이루어진 열쇠 세트입니다. 공개키는 서버에 저장되고, 개인키는 사용자 컴퓨터에 저장됩니다. 이때, 개인 키를 담고 있는 파일이 바로 pem 파일입니다. 클라우드에서 서버를 만들 때 이 pem파일을 다운로드하게 됩니다.
SSH를 통해 서버에 접속하는 방법을 보자면,
서버에 접속할 때는 SSH 클라이언트 프로그램을 이용해서 pem파일을 같이 사용합니다. 명령어 창에 아래와 같이 커맨드를 입력하면 서버에 접속할 수 있습니다.
ssh -i my-key.pem user@my-server-ip
// 여기서 -i 옵션은 개인키 파일을 지정해주는 역할을 합니다.
// 예시
ssh -i gcp-key.pem ubuntu@34.123.45.67
gpt가 예시를 잘 들어주네요 하하
뭐 이어서 말하자면, 여기서 my-key.pem이 개인키 파일입니다. user는 서버에 접속할 때 사용하는 계정 이름이고, my-server-ip는 접속하려는 서버의 IP주소입니다.
예시를 보면,
gcp-key.pem이 개인키 파일이고, ubuntu가 사용자 계정 이름, 34.123.45.67이 접속 서버의 IP가 되겠죠?
SSH의 동작 원리
SSH가 어떻게 서버에 접속하는지 동작 원리를 정리해보면 다음과 같습니다.
- 클라이언트(내 컴퓨터)가 서버에 접속하려고 요청을 보냅니다.
- 여기서 요청은 ssh -i my-key.pem user@my-server-ip, 이 명령어를 말합니다.
- 서버가 자신의 공개키를 보내고, 클라이언트가 키를 확인합니다.
- 클라이언트는 pem파일을 사용해 서버가 보낸 내용을 해독한 후 자신의 신분을 인증합니다.
- 인증이 완료되면 보안 통신이 설정되고, 클라이언트는 서버에 접속해서 명령을 실행할 수 있습니다.
사용시 주의할 점
SSH는 매~우 유용한 도구이지만, 주의해서 사용할 점이 몇 가지 있습니다.
- 키 관리
- 여러 개의 서버를 관리하거나, 각 서버마다 다른 키 파일을 사용할 경우에 파일을 매~우 잘 관리해야 합니다. 만약 키 파일을 분실하거나 잘못된 파일을 사용할 경우 서버에 접속할 수 없게 됩니다.
- 보안 유지
- 그 어떤 키가 됐든, 잘 보관하고 관리하여야 하지만 개인키 파일(pem파일)은 정말 안전하게 보관해야 합니다. 키 파일이 유출되거나 다른 사람한테 넘어가면, 누군가 내 서버에 무단으로 접근할 수 있는 위험이 있습니다. 이를 방지하기 위해서도 외부에 키 파일이 노출되지 않도록 철저하게 관리해야 합니다.
끝내는 말
오늘은 22번 포트를 사용하는 SSH에 대한 글을 작성해보았습니다. 원래 작성할 생각이 없었는데, 갑자기 어제 같이 일하는 동생이
???: SSH가 몇 번 포트일까?
라고 말했던 게 생각나서 작성하게 되었습니다 ㅎ.ㅎ
아무튼 SSH는 앞으로 개발쪽 일에 종사한다고 하면 계속 듣고 보게 될 친구이기 때문에 알아두시면 유용할 거 같습니다.
읽어주셔서 감사합니다:)
'네트워크' 카테고리의 다른 글
HTTP에서 HTTPS로: 인증서, 암호화, 그리고 송수신의 비밀 (2) | 2025.04.08 |
---|---|
Socket이 뭘까? WebSocket과 Socket.io 알아보기 (2) | 2024.11.13 |
Polling과 SSE, 실시간 통신에서 무엇이 더 적합할까? (1) | 2024.10.18 |