상세 컨텐츠

본문 제목

SSH (Secure Shell)란?

운영 체제(OS)/리눅스(Linux)

by Pyidros 2024. 3. 4. 12:51

본문

SSH (Secure Shell)는 네트워크를 통해 다른 컴퓨터에 안전하게 로그인하고, 원격 시스템에서 명령을 실행하며, 파일을 복사할 수 있게 해주는 프로토콜입니다. 기존의 rsh, rlogin, telnet 등을 대체하기 위해 설계되었으며, 통신 중인 데이터를 암호화하여 보안을 강화했습니다.

여기 rsh, rlogin, telnet, 그리고 ssh의 각각에 대한 간단한 설명과 장단점을 정리해드리겠습니다.

rsh (Remote Shell):

  • 특징: 사용자가 원격 호스트에서 명령을 실행할 수 있게 해줍니다.
  • 장점: 간단하고 사용하기 쉽습니다.
  • 단점: 암호화되지 않은 텍스트로 데이터를 전송하기 때문에 보안에 취약합니다.

rlogin (Remote Login):

  • 특징: 원격 시스템에 로그인하여 인터랙티브 셸 세션을 사용할 수 있습니다.
  • 장점: 사용자가 원격으로 시스템에 로그인하고 작업할 수 있게 해줍니다.
  • 단점: rsh와 마찬가지로 데이터 전송이 암호화되지 않아 보안에 취약합니다.

telnet:

  • 특징: 원격 시스템에 대한 텍스트 기반의 인터페이스를 제공합니다.
  • 장점: 널리 사용되며 많은 시스템과 호환됩니다.
  • 단점: 모든 통신이 암호화되지 않아 중간자 공격에 취약합니다. 현대의 네트워크 환경에서는 거의 사용되지 않습니다.

ssh (Secure Shell):

  • 특징: 암호화된 채널을 통해 안전한 텍스트 기반 통신을 제공합니다.
  • 장점: 강력한 인증 및 암호화를 통해 보안을 제공합니다. 이는 데이터 무결성 및 기밀성을 보장하며, 사용자가 원격 시스템에서 안전하게 명령을 실행하고 파일을 전송할 수 있게 해줍니다.
  • 단점: 더 복잡한 구성과 관리가 필요하며, 오래된 시스템이나 장비에서는 지원되지 않을 수 있습니다.

SSH는 rsh, rlogin, telnet에 비해 데이터를 암호화하여 안전한 원격 작업 환경을 제공한다는 큰 장점이 있습니다. 이러한 이유로 현재 대부분의 원격 접속과 파일 전송에는 SSH가 사용됩니다. 

 

Telnet과 달리 SSH는 암호화 기능을 통해 데이터를 안전하게 보호합니다. 사용자 인증을 위한 공개 키 인증 방식을 지원하며, 이를 통해 비밀번호 없이도 안전하게 로그인할 수 있는 방법을 제공합니다. 또한, SSH는 포트 포워딩을 통해 로컬 및 원격 포트를 연결하고, 안전하지 않은 트래픽을 암호화된 채널을 통해 전송할 수 있는 기능을 제공하여, 더욱 강력한 네트워크 보안 환경을 구축할 수 있습니다.

SSH의 이러한 보안 기능 때문에, 많은 조직과 시스템 관리자들은 민감한 데이터를 처리하거나 중요한 시스템을 관리할 때 SSH를 선호합니다. 이는 네트워크를 통한 관리 작업의 안전성을 크게 향상시키며, 원격 시스템에 대한 신뢰성 있는 접근을 가능하게 합니다.

Telnet과 같은 이전 프로토콜들은 여전히 일부 구식 시스템이나 특정 환경에서 사용되기는 하지만, 보안이 중요한 대부분의 현대적인 환경에서는 SSH가 그 자리를 대체하고 있습니다. Telnet은 간단한 테스트나, 보안이 크게 중요하지 않은 내부 네트워크에서의 사용에 한정되어 사용됩니다.

 

 

SSH는 어떻게 작동되는가??

 

SSH (Secure Shell)는 클라이언트-서버 모델을 기반으로 작동합니다. 여기에는 클라이언트(SSH 클라이언트 프로그램을 실행하는 사용자의 컴퓨터)와 서버(SSH 서버 프로그램을 실행하는 원격 컴퓨터)가 포함됩니다.

작동 과정을 단계별로 설명하면 다음과 같습니다:

  1. 연결 설정:
    • 클라이언트가 서버에 연결을 시도하며, 서버는 자신의 신원(공개 키)을 클라이언트에게 전송합니다.
    • 클라이언트는 이 공개 키를 확인하고 신뢰할 수 있는지 결정합니다. 이전에 연결한 적이 있으면 클라이언트는 known_hosts 파일에서 키를 확인합니다.
  2. 인증:
    • 클라이언트가 서버의 신원을 확인한 후, 사용자는 서버에 로그인해야 합니다. 이때 사용자 이름과 비밀번호, 공개 키 인증, 또는 다른 인증 방법을 사용할 수 있습니다.
    • 공개 키 인증을 사용하는 경우, 클라이언트는 개인 키를 사용하여 인증 요청에 서명하고, 서버는 해당 사용자의 공개 키로 서명을 검증합니다.
  3. 암호화된 세션:
    • 인증이 성공하면, 클라이언트와 서버는 대칭 키를 사용하여 세션 데이터를 암호화하기 위한 안전한 채널을 협상합니다. 이 대칭 키는 세션 동안만 유효하며, 일반적으로 매 세션마다 새로 생성됩니다.
    • 이후 모든 통신은 이 대칭 키를 사용하여 암호화되어 전송됩니다.
  4. 데이터 전송:
    • 세션 암호화가 설정되면, 클라이언트는 명령어를 서버로 전송할 수 있고, 서버는 그 결과를 클라이언트로 반환합니다.
    • 파일 전송은 SFTP(SSH File Transfer Protocol) 또는 SCP(Secure Copy Protocol)를 통해 암호화된 형태로 이루어집니다.

이러한 과정은 사용자와 서버 간의 모든 데이터가 노출 없이 안전하게 전송될 수 있도록 보장합니다.

 

예를들어 코딩으로 예시를 든다면 다음과 같다 

---------------------------------------------------------------------------

클라이언트 -> 서버: 연결 요청
서버 -> 클라이언트: 공개 키 전송

if 클라이언트가 서버 키를 신뢰한다면
    클라이언트 -> 서버: 인증 정보 전송(비밀번호 또는 개인 키 서명)
    if 서버가 인증을 승인한다면
        양쪽은 대칭 키를 생성하여 세션 암호화
        클라이언트와 서버 간에 암호화된 데이터 통신이 시작됨
    else
        연결 실패
else
    연결 실패

---------------------------------------------------------------------------

관련글 더보기