목차
- 원격 터미널 접속이 필요한 이유
- SSH / Telnet 이란? 두가지의 차이점은?
- SSH 원격 접속
- Telnet 원격 접속
- 윈도우에서 Telnet 연결
- xshell에서 키생성
- ssh key 동작방식
- 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 동작방식
- 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를 지정하지 않았기 때문에 곧바로 로그인 완료!
쉘 세션 오픈 .
끝!
'기초 물방울 > 리눅스&VM' 카테고리의 다른 글
우분투 GUI / CLI 전환 명령어 (0) | 2022.08.24 |
---|---|
우분투 원격 접속 설정 / 확장팩 설치 (0) | 2022.08.22 |
Boot Loader, 로그분석, 모니터링(수업) #14 (0) | 2022.07.09 |
삼바(samba)서버 생성 (수업) #13 (0) | 2022.07.09 |
데이터베이스 서버 구축(수업) #12 (0) | 2022.07.09 |