SSH란 무엇이며 어떻게 작동합니까?

게시 됨: 2021-08-15

SSH는 네트워크의 원격 컴퓨터에 액세스하기 위한 보안 네트워크 프로토콜입니다.

컴퓨터는 네트워크를 통해 서로 대화합니다. 따라서 네트워크 연구자들은 다른 기계와 통신하기 위한 일련의 규칙을 정의하고 Telnet과 같은 프로토콜을 개발하기 시작했습니다. 이를 사용하여 한 사용자가 다른 컴퓨터를 제어할 수 있습니다.

그러나 그들은 안전하지 않습니다. 즉, 네트워크 중간에 있는 모든 사람이 전송되는 데이터를 가로채서 읽을 수 있습니다. 90년대 중반에 텔넷 프로토콜의 신뢰할 수 있는 후속 프로토콜인 ssh 라는 보다 안전한 프로토콜이 도입되었습니다.

보안 쉘

업계에서 일하는 소프트웨어 개발자 또는 시스템 관리자라면 적어도 한 번은 ssh를 사용했을 것입니다. 모르셨다면 꼭 알아야 할 필수 기술 중 하나이니 지금 바로 배워봅시다.

SSH 란 무엇입니까?

SSH 또는 Secure Shell 또는 Secure Socket Shell 은 원격 시스템(대부분 원격 서버)에 안전하게 액세스하고 통신하는 데 도움이 되는 네트워크 프로토콜입니다.

강력한 암호화 를 제공하며 네트워크 관리자와 개발자가 원격 시스템 및 애플리케이션을 관리하고, 명령을 실행하고, 파일을 공유하는 등 널리 사용됩니다.

SSH의 필요성

SSH는 rlogin, rsh, Telnet과 같은 보안되지 않은 원격 액세스 프로토콜이 직면한 보안 문제를 해결하기 위해 1995년에 만들어졌습니다.

이제 1969년에 개발된 Teletype Network 의 약자인 Telnet에 대해 이야기해 보겠습니다. Telnet은 컴퓨터에서 실행되어 원격 서버(전 세계 어디에 있든)에 액세스하는 간단한 명령줄 도구입니다. 그리고 원격 서버 바로 앞에 있는 것처럼(서버에서 몇 마일 떨어져 있어도) 해당 서버에서 실행할 명령을 보냅니다. 텔넷은 네트워크를 통해 일반 텍스트로 메시지를 송수신 합니다.

실행할 명령은 프로그램 실행, 디렉토리 생성, 파일 생성/삭제/전송, 서비스 시작/중지 등이 될 수 있습니다.

네트워크에서 다른 기계를 연결할 때의 문제는 전송되는 데이터가 많은 네트워크를 통과한다는 것입니다. 한편, 그 중 일부는 안전하지 않을 수 있으며 전송 데이터가 가로채어 의도한 대상 시스템에 도달하기 전에 수정될 수 있습니다.

암호화된 통신

보안이 그다지 중요하지 않았던 초기에는 모든 통신이 일반 텍스트로 이루어졌습니다. 따라서 클라이언트와 서버 간에 인터넷을 통해 전송되는 데이터를 쉽게 가로챌 수 있습니다. 그리고 메시지가 암호화되지 않았기 때문에 읽을 수 있습니다.

따라서 일반 텍스트 프로토콜은 매우 안전하지 않으며 암호, 비밀 등과 같은 민감한 데이터 전송에 사용되지 않습니다. 따라서 SSH는 레거시 원격 액세스 네트워크 프로토콜에 대한 안전한 대안으로 간주되고 있습니다.

어떻게 작동합니까?

SSH는 ssh 클라이언트를 ssh 서버와 연결하여 네트워크를 통한 보안 통신을 위해 클라이언트-서버 아키텍처를 사용합니다. 기본적으로 ssh 서버는 표준 TCP 포트 22를 수신합니다(보안 강화를 위해 변경할 수 있음).

공개 키 암호화 기술을 사용하여 클라이언트와 서버 간에 인증합니다. 또한 이 프로토콜은 클라이언트와 서버 간의 메시지 교환에 강력한 대칭 암호화 및 해싱 알고리즘 을 사용하여 개인 정보 보호 및 데이터 무결성을 보장합니다.

SSH 암호화 통신

Linux는 보안내구성 때문에 원격 서버용으로 널리 사용되는 운영 체제입니다. 인터넷에서 Linux 운영 체제를 사용하는 많은 서버는 수년 동안 많은 실패 또는 재시작 없이 실행되었습니다.

대부분의 SSH 세션(원격 서버에 액세스하는 기간)에는 다음 두 가지 작업만 있습니다.

  • 입증
  • 명령 실행

SSH 서버는 다양한 방법을 사용하여 클라이언트를 인증할 수 있습니다.

널리 사용되는 두 가지 방법은 다음과 같습니다.

  • 암호 기반
  • 키 기반

암호 기반 인증 은 OpenSSH가 설치된 클라이언트의 인증에 사용되는 기본 방법입니다. 가장 기본적인 ssh 인증이지만 가장 안전한 인증은 아닙니다.

암호가 서버로 안전하게 전송되더라도 현대의 무차별 암호 대입 공격은 인증을 우회할 수 있습니다.

키 기반 인증은 신뢰할 수 있고 안전한 대안으로 입증된 SSH 키 쌍을 생성하여 시스템 보안을 더욱 향상시킵니다.

서버가 클라이언트를 성공적으로 인증하면 클라이언트 간에 보안 연결이 설정됩니다.

SSH를 사용하여 원격 서버에 액세스

Mac/Linux 사용자인 경우 OpenSSH가 기본적으로 설치되어 있으므로 터미널을 직접 사용하여 ssh 명령을 입력하고 실행할 수 있습니다.

Windows 사용자인 경우 ssh 명령을 실행하려면 하나의 타사 터미널 에뮬레이터 클라이언트를 설치해야 합니다. PuTTY는 Windows 운영 체제에서 가장 널리 사용되는 ssh 클라이언트입니다.

SSH를 사용하여 원격 서버에 연결하려면 최소한 두 가지를 알아야 합니다.

  • 서버 호스트
  • 사용자 이름

기본 ssh 명령의 구문은 다음과 같습니다.

 $ ssh <user-name> @ <host> -p <port-no>

사용자 이름 은 연결하려는 원격 시스템의 사용자 이름(로컬 시스템의 사용자가 아님)이고 호스트 는 IP 주소 또는 도메인 이름입니다.

OverTheWire 웹 사이트를 사용하여 원격 서버에 연결하는 예를 살펴보겠습니다. 무료 워게임 챌린지 웹사이트입니다.

이제 ssh를 이용하여 밴딧 챌린지에 접속해 봅시다. SSH를 사용하여 로그인하는 방법을 가르치는 웹 사이트에서 사용 가능한 챌린지 중 하나입니다.

신임장:

사용자 이름 및 비밀번호: bandit0
호스트 및 포트: bandit.labs.overthewire.org , 2220

다음 명령을 입력하고 Enter 키를 누르면:

 $ ssh [email protected] -p 2220

인증을 위해 암호를 묻는 메시지가 표시됩니다. 이제 암호를 입력하고 Enter 키를 누릅니다.

SSH 로그인 예

입력한 암호가 맞으면 원격 서버에 성공적으로 로그인되고 터미널은 위 이미지와 같이 표시됩니다.

이제 원격 시스템의 터미널을 사용하여 명령을 입력 및 실행하고 필요한 작업을 수행할 수 있습니다.

ssh 세션을 종료하려면 exit 명령을 입력하십시오.

 $ exit

SSH 세션 종료

ssh 세션에서 성공적으로 로그아웃하면 " 연결이 종료되었습니다" 라는 메시지가 표시됩니다.

결론

SSH가 널리 사용되는 주된 이유 는 서버와 클라이언트 간의 전체 통신이 암호화되기 때문 입니다.

대부분의 사람들은 ssh를 사용하는 것이 복잡하고 작동 방식에 대한 지식을 얻는 것이 쉽게 이해할 수 없다고 생각하지만 생각보다 간단합니다. 이제 SSH, 작동 방식, 보안 측면, 통신에서 SSH가 중요한 역할을 하는 이유에 대한 기본적인 이해가 생겼습니다.

다음으로 Sysadmin이 되기 위한 몇 가지 리소스를 탐색합니다.