[네트워크] SSH이란?~개념/터미널 애뮬레이터/원격 터미널 접속이 필요한 이유~(프로토콜 텔넷 푸티 원격 리눅스)_protocol terminal emulator linux putty remote TELNET sh bash_- What is SSH?-++
+ SSH이란?~개념/터미널 애뮬레이터/원격 터미널 접속이 필요한 이유
- SSH 이란?
SSH(Secure Shell) Protocol은 컴퓨터와 컴퓨터가 인터넷과 같은 Public Network를 통해 서로 통신을 할 때 보안을 중점으로 안전하게 통신을 하기 위해 사용하는 프로토콜입니다.
주요한 목적으로는 데이터 전송 / 원격 제어가 있습니다.
* 대표적인 사용 예
데이터전송 : 원격 저장소인 깃허브 이용 시 소스 코드를 원격 저장소인 깃허브에 푸쉬할 때 여러분은 SSH를 활용해 파일을 전송하게 됩니다.
원격 제어 : AWS와 같은 클라우드 서비스를 이용 시 인스턴스 서버에 접속하여 해당 머신에 명령을 내리기 위해서도 SSH를 통한 접속을 해야 합니다.
기존에는 Telnet이나 Rlogin을 사용하였지만 최근에는 대부분 SSH 프로토콜을 사용합니다.
우리가 흔히 알고있는 리눅스 명령어는 SSH 명령어라고 부르기 보다는 sh, bash 등의 셸 명령어라고 보시는 것이 맞습니다.
대부분은 sh 및 bash 라는 명령어 체계를 사용할 것입니다.
따라서 Telnet으로 접속하던 SSH로 접속하던 사용하는 환경이 크게 달라지지는 않습니다.
서버가 동일하고 해당 서버에서 사용하는 셸 명령어가 동일하다는 조건 하에 말이죠.
그런데 Telnet 프로토콜을 놔두고 굳이 SSH 프로토콜을 개발했으며, Telnet을 사용하지 않는 분위기가 조성되었을까요?
이유는 Telnet은 보안적으로 매우 치명적인 결함이 있기 때문입니다.
먼저 SSH 프로토콜을 사용했을 때는 내용을 암호화를 통해 패킷을 보내기때문에 보안에 유리합니다.
그러나 Telnet 프로토콜을 사용했을 때는 별도의 암호화가 되지 않고 패킷을 보냅니다.
이로 인해 탈취자가 파악할 수 있는 치명적인 문제가 발생합니다.
때문에 특별한 경우가 아니면 Telnet 프로토콜 사용을 지양해야 합니다.
최신 리눅스에서는 일반적으로 SSH 데몬이 구동되고 Telnet은 패키지조차 설치되지 않았을 것입니다.
- 용어와 쓰임새
리눅스를 처음 접하시는 분들은 터미널과 Telnet과 SSH와 같은 프로토콜 등에 대한 용어와 쓰임새에 대해서 많이들 혼동하시곤 합니다. ‘리눅스 환경에서 터미널을 열었으니 SSH 접속이 된 것이다’ 라고 생각할 순 있으나, 이는 터미널 환경에서 명령어 셸을 통한 인터페이스가 제공된 것일 뿐이며 SSH 프로토콜을 사용한 것은 아닙니다.
- 원격 터미널 접속이 필요한 이유
리눅스 서버를 구축한다면 터미널이나 그래픽 유저 인터페이스 환경을 통해 여러가지 작업을 진행할 수 있습니다.
그러나 대부분의 리눅스 서버는 회사에서 사내 서버로서 한 장소에 묶어두거나,
호스팅 업체 및 클라우드 호스팅 등의 다양한 구성으로 이루어졌기 때문에 관리자와 멀리 떨어져있는 곳에 서버가 위치한 경우가 많습니다.
서버 작업을 처리해야 할 일이 있을 때 마다 매번 해당 서버가 위치한 곳으로 이동할 수는 없고,
이동해서 관리하자니 관리해야 할 서버가 점차 많아지게 되면 각각의 서버로 이동하여 일일히 모니터를 연결하여 작업을 할 수는 없는 노릇입니다.
이에 따라 원격 접속은 중요하고 필수적인 작업이 되었습니다.
다양한 원격 접속 프로그램을 사용하여 원격지에 있는 서버에 굳이 찾아가지 않고 해당 서버의 주소(IP 등)만 알고 있다면 다른 PC를 통해 바로 접속할 수 있습니다.
윈도우로 말하자면 원격 데스크톱 연결(RDP)을 예로 들 수 있겠네요.
리눅스도 마찬가지입니다.
리눅스에서는 일반적으로 RDP 프로토콜을 지원하지 않아 그래픽 데스크톱 환경에서 띄우기 위해 VNC나 XRDP, XDMCP와 같은 프로토콜을 사용해야 하며 연결이 가능해지도록 일련의 설정을 해주어야 합니다.
그러나 특수한 경우가 아니라면 일반적인 터미널 연결을 위해서까지 굳이 그래픽 데스크톱 환경을 띄워야 할 필요는 없을 것입니다.
이러한 원격 접속을 이용하여 터미널 환경을 사용할 수 있도록 고안된 프로토콜이 Rlogin, Telnet, 그리고 최근들어 가장 많이 사용되는 SSH입니다.
- 터미널과 터미널 에뮬레이터
우리가 흔히 접하는 프로그램인 Xshell, PuTTY, iTerm이나 SecureCRT는
윈도우에서 원격 리눅스 서버로 터미널 접속 프로토콜을 사용하여 연결할 수 있도록 도와주는 터미널 에뮬레이터 클라이언트입니다.
리눅스 내에서 실행되는 터미널 또한 마찬가지로 터미널 에뮬레이터로 불립니다.
터미널 에뮬레이터(Terminal Emulator)는 말 그대로 실존하는 것이 아닌 가상으로 구현된 복제품입니다.
기존의 터미널은 포괄적으로 볼 수 있는 컴퓨터와 사용자 간의 소통을 위한 인터페이스에 가깝습니다.
Telnet과 SSH와 같은 프로토콜은 원격지로 연결을 가능하도록 하는 네트워크 접속 도구입니다.
리눅스 시스템 자체에 있는 터미널 클라이언트는 대개 원격 접속이 아니기 때문에 SSH 프로토콜을 사용하지 않습니다.
- 출처
댓글
댓글 쓰기