SSH(Secure SHell, SSH)와 Telnet은 네트워크 프로토콜입니다.
Telnet이 먼저 사용되다가 Telnet이 가지고 있는 단점 때문에 현재는 SSH를 사용하는 추세입니다.
먼저 Telnet에 대해서 정리를 하고 SSH에 대해서 정리를 하도록 하겠습니다.
❗ 텔넷(TELNET)은 인터넷이나 로컬 영역 네트워크 연결에 쓰이는 네트워크 프로토콜입니다.
Telnet은 원격으로 컴퓨터 시스템에 로그인하고, 해당 컴퓨터의 자원을 사용하거나 관리할 수 있는 네트워크 프로토콜입니다.
Telnet은 1969년에 개발되었으며, 초기 인터넷의 일부였습니다. Telnet은 "텔레넷(Telecommunication Network)"의 줄임말로, 클라이언트-서버 모델을 사용합니다.
Telnet 클라이언트는 사용자의 컴퓨터에 실행되며, 원격 서버에 접속하여 커맨드를 전송하고 결과를 받아옵니다. 이를 통해 원격 컴퓨터에서 마치 로컬 컴퓨터에서 작업하는 것처럼 명령어를 실행할 수 있습니다.
하지만 Telnet은 몇 가지 중요한 단점이 있습니다:
이러한 이유로, 현재는 대부분의 경우 SSH(Secure Shell)와 같은 보안이 강화된 프로콜이 Telnet의 대안으로 사용되고 있습니다.
시큐어 셀(Secure Shell, SSH)은 네트워크 상의 다른 컴퓨터에 로그인하거나 원격 시스템에서 명령을 실행하고 다른 시스템으로 파일을 복사할 수 있도록 해 주는 응용 프로그램 또는 그 프로토콜을 가리킵니다.
즉, SSH는 원격 컴퓨터와 안전하게 통신하고 관리하기 위한 암호화된 네트워크 프로토콜입니다.
우리는 사실 이것을 사용하는 서비스를 많이 봐왔을 것입니다.
흔히, NBP나 AWS같은 클라우드 서비스에서 서버를 생성하면 '인증키'나 '키 페어'라는 것을 생성하는 것을 확인할 수 있습니다.
여기서 깃허브에서 사용하는 'Token'이 개인키일 줄 알았지만, 조금 다른 개념이라고 합니다.
토큰은 사용자의 권한을 나타내는 고유한 문자열로, 사용자 인증 및 권한 부여를 위해 사용됩니다.
Github에서 토큰은 사용자의 비밀번호 대신 API 요청에 사용되어, 인증 및 권한을 확인합니다.
토큰은 다음과 같은 목적으로 사용됩니다.
1. 인증: 토큰은 사용자 인증 정보를 안전하게 전달하는 방법으로 사용됩니다. 비밀번호 대신 토큰을 사용함으로써, 비밀번호가 노출될 위험을 줄일 수 있습니다.
2. 권한 부여: 토큰은 사용자에게 특정 권한을 부여하는 데 사용됩니다. 예를 들어, 특정 레포지토리에 대한 읽기, 쓰기 또는 권리 권한을 토큰을 통해 설정할 수 있습니다.
3. 접근 제어: 토큰을 사용하면 사용자의 접근 범위를 제한할 수 있습니다. 예를 들어, 특정 레포지토리에 대한 접근만 허용하거나, 특정 작업에 대한 권한만 부여할 수 있습니다.토큰은 개인키와 다르게, 사용자의 인증 및 권한 부여를 위한 목적으로만 사용되며, 암호화나 디지털 서명에 사용되지는 않습니다. 하지만, 토큰은 매우 중요한 정보이기 때문에 개인키처럼 안전하게 보관해야 합니다. 누군가가 사용자의 토큰에 액세스할 경우, 해당 사용자의 권한 범위 내에서 Github에서 작업을 수행할 수 있게 됩니다.
우리가 원격으로 서버에 접속하기 위해서는 외부의 보안 위협으로부터 보호해주는 기술이 필요합니다.
그때 사용되는 것이 "공개키(Public Key)"와 "비공개키(Private Key)"입니다.
왜 이 방식을 사용하는 것일까요?
만약, 우리가 비밀번호를 사용해서 원격 서버에 접속을 한다고 생각해 봅시다.
이 방식을 사용하는 것이 텔넷(Telnet)에서 사용하는 방식입니다.
암호화를 제공하지 않기 때문에 보안상 취약합니다. 실제로 WireShark 같은 패킷 분석 프로그램을 이용하면 누구나 쉽게 원격 접속 과정에서 옮겨지는 비밀번호나 파일 내용등의 데이터를 탈취할 수 있습니다. 때문에 이를 암호화하는 SSH 기술이 등장했고, 현재 원격 접속 보안을 위한 필수적인 요소로 자리잡고 있습니다. 그리고 클라우드 서비스에서 제공하는 서버는 기본적으로 원격 접속을 해서 접근하고 사용합니다. 그래서 NBP나 AWS와 같은 CSP(Cloud Service Provider)에서 서버 생성시 필수적으로 SSH 보안 과정을 거치는 것입니다.
특징을 좀 정리해자면 다음과 같습니다.
결국 공개키를 사용하는 이유는 다음과 같습니다.
공개키를 사용함으로써 위의 이유로 안전하고 효율적인 인증 및 암호화를 제공할 수 있습니다.
동작 순서를 간단하게 정리해 보자면 다음과 같습니다.
Reference