728x90
반응형
안녕하세요 늑대양 입니다
IT 상식 카테고리에서는 IT 업계에서 직간접적으로 일하면서 알고 있으면 좋은 점을 작성해보고자 합니다.
이번 IT 상식 블로깅의 주제는 "SSH" 입니다.
SSH (Secure Shell)
Related URL: https://www.ssh.com/academy/ssh/protocol
What is the Secure Shell (SSH) Protocol? | SSH Academy
The SSH protocol (also referred to as Secure Shell) is a method for secure remote login from one computer to another.
www.ssh.com
개요
- SSH(Secure Shell)는 네트워크를 통해 다른 컴퓨터에 안전하게 접속하기 위해 사용되는 암호화된 네트워크 프로토콜입니다.
- SSH는 원격 로그인, 원격 명령 실행, 그리고 네트워크 서비스를 안전하게 사용할 수 있게 해줍니다.
SSH 이전의 원격 접속 방식
Telnet
- SSH 이전에는 Telnet이라는 프로토콜이 주로 사용되었습니다.
- Telnet은 네트워크를 통해 원격으로 컴퓨터에 접속하고 명령어를 실행할 수 있는 프로토콜입니다.
Telnet의 특징
- 평문 전송: Telnet은 데이터를 암호화하지 않고 평문으로 전송합니다. 따라서 네트워크 스니핑 공격에 매우 취약합니다.
- 포트: 기본적으로 23번 포트를 사용합니다.
Telnet의 단점
- 보안 문제: 평문 전송으로 인해 데이터 유출 및 도청의 위험이 큽니다.
- 인증 방식의 취약성: 사용자 인증 과정도 암호화되지 않아서 쉽게 크랙될 수 있습니다.
rlogin
- rlogin(remote login)은 BSD 운영 체제에서 원격 로그인에 사용되는 유틸리티입니다.
rlogin의 특징
- 간단한 사용법: 기본적인 원격 로그인 기능 제공.
- 호스트 기반 인증: 사용자 ID와 호스트 이름을 기반으로 인증.
rlogin의 단점
- 보안 문제: Telnet과 마찬가지로 암호화가 되지 않아 보안에 취약합니다.
- 호스트 기반 인증의 문제: 호스트 이름을 속이는 공격에 취약합니다.
SSH의 역사
- SSH는 1995년 핀란드의 Tatu Ylönen이 처음 개발했습니다.
- 그는 당시 Telnet과 rlogin의 보안 문제를 해결하기 위해 SSH를 설계했습니다.
- 이후 SSH는 많은 발전을 거쳐 현재 SSH-2라는 버전까지 발전했습니다.
주요 버전
- SSH-1: 초기에 개발된 버전으로 몇 가지 보안 취약점이 발견됨.
- SSH-2: SSH-1의 단점을 보완하고 더 강력한 암호화 및 보안 기능을 제공.
SSH의 장점
- 강력한 암호화: 대칭 암호화, 비대칭 암호화, 해시 함수를 이용한 강력한 보안 제공.
- 다양한 인증 방법: 패스워드, 공개 키, GSSAPI 인증 등 다양한 인증 방식 지원.
- 포트 포워딩: 터널링을 통해 안전한 통신 채널 제공.
- 세션 재개: 네트워크 장애 후에도 세션을 유지하고 재개할 수 있는 기능.
- 데이터 무결성: 전송된 데이터의 무결성을 보장하는 해시 함수를 사용.
SSH의 단점
- 초기 설정 복잡성: 처음 설정할 때 키 생성 및 배포 등의 과정이 복잡할 수 있음.
- 고성능 필요: 암호화 및 복호화 과정에서 CPU 자원을 많이 사용.
- 네트워크 지연: 암호화로 인해 통신 속도가 다소 느려질 수 있음.
SSH 명령어 가이드
$ ssh
usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address]
[-c cipher_spec] [-D [bind_address:]port] [-E log_file]
[-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file]
[-J destination] [-L address] [-l login_name] [-m mac_spec]
[-O ctl_cmd] [-o option] [-P tag] [-p port] [-R address]
[-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]]
destination [command [argument ...]]
ssh [-Q query_option]
SSH 사용 예제
- 다음은 SSH를 사용하여 원격 서버에 접속하는 기본적인 예제입니다.
ssh user@hostname
- 여기서 user는 원격 서버의 사용자 이름이고, hostname은 원격 서버의 호스트 이름 또는 IP 주소입니다.
ssh ec2-user@<EC2 Public IP> -i ~/.ssh/<key-name>.pem
- 위의 예제는 AWS 환경의 대표적인 인스턴스 접속 방법에 대한 예제 입니다
- user: ec2-user
- hostname: EC2 인스턴스에 할당된 public IP
- -i 옵션을 활용하여, identity file 을 활용하며, 예제에서는 pem 파일 사용
결론
- SSH는 Telnet과 rlogin의 보안 문제를 해결하기 위해 개발된 안전한 원격 접속 프로토콜입니다.
- 강력한 암호화와 다양한 인증 방법을 제공하여 네트워크 상에서 안전하게 데이터를 주고받을 수 있게 해줍니다.
- 비록 초기 설정이 다소 복잡하고 성능 요구 사항이 높을 수 있지만, 보안 측면에서 탁월한 장점을 제공하여 널리 사용되고 있습니다.
IT 업계 종사자 분들에게 도움이 되었으면 좋을 것 같습니다.
감사합니다 🤗
728x90
반응형