기초 물방울/리눅스&VM

리눅스 Centos 7 SSH Telent 구축 (+SecureCRT)

Weeding 2022. 8. 10. 01:36
반응형
SMALL

목차

  1. 원격 터미널 접속이 필요한 이유
  2. SSH / Telnet 이란? 두가지의 차이점은?
  3. SSH 원격 접속 
  4. Telnet 원격 접속 
  5. 윈도우에서 Telnet 연결 
  6. xshell에서 키생성
  7. ssh key 동작방식
  8. ssh 서버 접속을 위한 리눅스에서의 키생성 및 설정

 

 

 

 

 

1. 원격 터미널 접속이 필요한 이유

  • 대부분의 리눅스 서버는 회사에서 사내 서버로 한 장소에 묶어두거나 호스팅 업체 및 클라우드 호스팅 등의 다양한 구성으로 이루어졌기 때문에 관리자와 멀리 떨어져있는 곳에 서버가 위치한 경우가 많음.

  • 서버 작업을 처리해야 할 일이 있을 때 마다 매번 해당 서버가 위치한 곳으로 이동할 수는 없고, 이동해서 관리하자니 관리해야 할 서버가 점차 많아지게 되면 각각의 서버로 이동하여 일일히 모니터를 연결하여 작업을 할 수 없음.

 

= 이에 따라 원격 접속이 필요해짐!

= 다양한 원격 접속 프로그램을 사용해 원격지에 굳이 찾아가지 않고 다른 PC를 통해 접속 가능!

 

 

 

 

2. SSH와 Telnet 비교

SSH (Secure Shell) Telnet
1. 보안을 중요시한 프로토콜 1. 정보 그대로의 Byte스트림 형식
2. 기본 포트 22 2. 기본 포트 23
3. 암호화 기법 사용
-> 노출시 이해할 수 없는 암호화 문자로 노출됨.
 
4. SSH1 (RSA 암호화 방식을 사용한 공개 프로토콜)
    SSH2 (RSA 암호화 방식 외에도 다양한 방식, 상업적용도)
 
공통점 / 차이점
- 원격 제어 프로토콜
- 사용자 입장에서는 차이가 없음.
- 단, 원격 제어 작업을 사용자가 네트웤을 통해 서버에 TCP/IP 패킷 정보를 전달하고,
  그 결과를 서버에 받는데 전송방식의 차이로 SSH가 보안이 뛰어남. 
- 또한 SSH는 압축 기술도 사용하며, 암호화 때문에 트래픽이 Telnet보다는 크게 늘어나지 않고 서버에 약간의 부하가 더 생김.
- 정보보안의 이점에 비하면 단점이 그렇게 크지 않기 때문에 종합적으로 SSH가 대세가 됨.
ex) - AWS의 인스턴스 서버에 접속하여 해당 머신에 명령을 내리기 위해 SSH를 통한 접속
      - 소스 코드를 원격 저장소인 깃헙에 푸쉬할 때 SSH를 활용해 파일을 전송

 

 

 


 

 

3. SSH 접속 과정

 

① ssh 설치 확인 및 설치

 

ssh 관련 서버 클라이언트 패키지 존재 확인

rpm -qa | grep sshd*

 

 

만약 설치가 안되있다면?

yum install openssh-server

 

 

 

② 방화벽 포트 열기

 

첫번째 방법

루트 사용자라면

vi /etc/ssh/sshd_config 

 

루트 사용자가 아니라면

sudo vi /etc/ssh/sshd_config

 

vi 편집기 화면에서 Port 22 주석해제

 

저장 후

systemctl restart sshd.service

 

 

 

 

 

두번째 방법

ssh 포트 열기 명령어

sudo firewall-cmd --permanent --add-service=ssh

 

firewall에 변경사항 적용

sudo firewall-cmd --reload

 

firewall 다시 시작 

sudo systemctl restart firewalld

 

 

 

 

 

ssh 작동 확인

systemctl status sshd

 

 

 

 

 

 

③ SecureCRT에서 ssh로 접속

ifconfig로 주소 먼저 확인

 

 

 

 

 

SecureCRT에서 SSH 접속

 

 

 

호스트네임에 SSH 서버 주소 입력

 

 

 

 SecureCRT와 리눅스에서 파일 생성 후 조회 해보기 (접속 잘 됬는지 확인)

 

 

 

 

 

 

 

 

 


 

SecureCRT 한글 깨짐 현상

 

Session Option으로 들어가서

 

 

Appearance에서 UTF-8 로 변경

 

"URL을 항상 UTF-8로 보내기"는 인터넷 주소를 유니코드로 변환하여 보낸다는 의미로 인터넷 주소가 영문과 숫자 혹은 기호로만 되어있다면 문제가 없지만 한글이나 특수 문자가 있다면 UTF-8로 변환했을 때 웹 페이지에 접속을 못하는 경우가 있습니다. 이런 경우 "URL을 항상 UTF-8로 보내기"의 체크를 해제하여 해결할 수 있습니다.

 

 

 

해결 완료

 

 

 

 

 

 

 


 

4. Telnet 접속 과정

 

 

① Telnet 패키지가 설치되어 있는지 확인

rpm -qa | grep telnet*

 

 

 

 

yum으로 설치하고 싶다면?

yum -y install telnet-server

systemctl start telnet.socket

firewall-cmd --permanent --zone=public --add-port=23/tcp

firewall-cmd --reload

 

 

 

② 마운트

마운트는 물리적인 장치와 특정한 위치(보통 디렉터리)에 연결 시켜주는 과정

리눅스는 cd와 dvd를 특정 디렉터리와 연결 해서 사용해야함.

= 이 과정을 쉽게 cd-rom에 cd를 넣는 과정이라고 생각하면 됨!

 

리눅스에서는 cdrom 장치는 /dev/cdrom에 위치하게함.

 

 

 

 

③ 패키지 설치

 

현재 위치한 디렉토리에 있는 파일 목록 확인

ls -l , ll

 

 

Packages 로 이동

cd Packages

 

 

RPM 패키지 설치

rpm -ivh telnet* 

 

 

 

 

 

④ telnet 서비스 시작 / 상태 확인

systemctl start telnet.socket

systemctl status telnet.socket

(active 체크)

 

 

 

⑤ 방화벽 열어주기

방화벽에 tcp 23번 포트 허용

firewall-cmd --permanent --zone=public --add-port=23/tcp

 

방화벽 설정 부팅

firewall-cmd --reload

 

방화벽 리스트 목록 확인

firewall-cmd --list-all

 

 

 

 

⑥ IP 확인

 

 

 

 

⑦ telnet 접속

 

 

 

 

 

⑧SecureCRT에서 Telnet 접속

 

 

 

 

 

 

 


 

 

 

SecureCRT 접속 시 백스페이스가 ^H로 나오는 현상 제거

 

 

 

 

 

 

 


 

윈도우에서 telnet 접속

 

 

 

 

 

 

 

가상머신의 윈도우에서 telnet 접속

 

 

 

CMD 에서도 백스페이스가 ^H로 되는 현상이 발생함.

-> ctrl + 백스페이스를 하면 해결되는 것 확인

-> 아예 명령어로 해결하는 부분은 찾지 못했다.

 

 

 

 

 

 

 

 

 


 

 

 

 

6. Xshell에서 SSH key 생성 방법

 

 



 

 

 

 

 

 

 

 

 

 

 

 

 


ssh key 동작방식

출처 : https://brunch.co.kr/@sangjinkang/52

 

  • SSH는 대칭키 암호화 방식 or 비대칭키 암호화 방식을 사용
  • 비대칭키 암호화 방식의 경우 클라이언트와 서버는 공개키(public) / 비밀키(secret) 을 통해 인증하는 방식
  • ---> 고로 한 쌍(pair)의 SSH 키가 필요함!
  • SSH 통신은 기본적으로 TCP 포트 22번을 사용하며 클라이언트가 SSH 접속 요청을 서버에 보내면
    서버는 그 클라이언트의 공개키로 암호화한 메시지를 클라이언트에게 인증 용도로 내려줌.
  • 클라이언트는 한 쌍으로 만들어졌던 비밀키를 이용해 암호화된 메시지를 복호화하며 인증이 완료됨.
  • 한 쌍이 아닌 다른 비밀키로는 메시지 복호화를 할 수 없다!

 

쌍이 되는 공개키는 아무 걱정 없이 누구에게나 공유할 수 있고,

공개키로 메시지를 암호화 할 수 있는데, 그 암호화 된 메시지는 그 쌍이 되는 private 키로만 해석할 수 있다! 

암호화에 사용한 공개키로도 암호화 된 메시지를 해석할 수 없음!

=> 이러한 특성이 키 페어를 사용한 인증방식에 사용됨!

 

 

 

 

 

7. ssh 서버 접속을 위한 리눅스에서의 키생성 및 설정

 

ⓛ 서버가 SSH 키 인증을 사용하려면 클라이언트에서 키 페어를 만들어야함.

ssh-keygen -t rsa

 

키 페어를 만들려면 OpenSSH에 포함되어 있는 ssh-keygen 유틸리티를 사용해야함.

디폴트로 2048-bit RSA 키 페어를 만들어짐

- 키 길이는 길면 보다 안전하고, 짧으면 처리 속도가 빨라짐.

- ssh1  : RSA 키만 지원

- ssh2  : RSA, DSA 모두 지원

 

아까 작업하다 만들어놓은 SSH 키가 있어서 아래 문구가 뜸

/home/test/.ssh/id_rsa already exists.

Overwrite (y/n) ? 

덮어쓰기를 하면 이전 키를 사용하는 인증은 더 이상 사용 불가!

되돌릴 수  없기 때문에 주의해서 해야함.

 

Passphrase까지 입력하면 네트워크 상에 절대로 노출이 되지 않기 때문에

보안성이 높아짐. 사용하는걸 권장하지만 !

 

비밀번호 입력 없이 접속을 위한 작업이므로 passphrase는 엔터만 쳐서 작업 진행

공개키와 비밀키 쌍이 만들어짐

 

 

 

②  공개키를 서버에 넣어 SSH key 인증

 ssh-copy-id admin@localhost

 

ssh-copy-id 라는 유틸리티를 사용해 서버에 공개키를 복사함.

(간단하기 때문에 가장 권장하는 방법)

(OpenSSH 패키지에 들어있기 때문에 로컬에 설치되어 있을 가능성 높음!)

 

이 방식을 사용하려면 먼저 서버에 패스워드로 ssh 액세스가 가능해야함.

연결하려는 원격 호스트 이름과 유저 아이디를 지정해 주면 됨!

 

로컬 컴퓨터가 원격 컴퓨터를 식별할 수 없어서 새 호스트에 처음으로 접속하는 경우 발생하는 문구

'yes'와 엔터를 눌러 계속 진행하면 유틸리티가 로컬 계정의 기존에 만들어 놓은 id_rsa.pub 키를 찾음!

 

암호를 입력하고 엔터를 누르면 유틸리티가 원격 호스트의 계정에 연결하고,

로컬 계쩡에 있는 ~/.ssh/id_rsa/.pub 키파일의 내용을

원격 호스트 계정의 ~/.ssh 디렉토리에 있는 authorized_keys 에 복사함.

 

이렇게 되면 내 id_rsa.pub 파일이 서버에 업로드 됨 !!

 

 

 

 

③ SSH 키를 사용해 서버에 로그인

ssh admin@localhost

 

서버에 공개키를 카피해 놓았기 때문에 원격 호스트에 로그인 할 계정의 암호 없이 로그인 가능!!

새 호스트에 처음으로 접속하면 발생하는 메시지

'yes' 와 엔터를 눌러 계속 지정.

공개키에 passphrase를 지정하지 않았기 때문에 곧바로 로그인 완료!

쉘 세션 오픈 . 

끝!

 

 

반응형
LIST