** 비대칭 암호화 방식을 이용한 ssh 로그인(접속)인증
* 사전지식
# /etc/ssh/sshd_config : sshd 데몬 설정 파일
# SSH 인증서를 이용한 로그온(Linux)
: 공개키 기반 인증(RSA 암호화방식-비대칭형 암호화)
-공개키, 개인키(Private)를 이용하여 암호화 통신
대칭형 암호화 : 암호화 통신하는 두 장비간 동일한 암호화 키를 가지고 통신하는 방식
주로 일반적인 데이터 통신에서 사용됨.
** 특징) 1) 암호화시 데이터의 사이즈 변화가 없다.
2) 가장 오래된 형태의 암호화 방식
3) 통신 데이터에 최적화 되어 있다.
중요 포인트(이슈) >>> 어떻게 암호화 키를 전달할 것인가?
비대칭형 암호화 : 암호화 통신시 공개키와 복호화키를 사용하여 전달하는 방식
공개키는 암호화 통신시 상대방에게 전달하는 키
개인키 또는 비밀키로 통신시 전달하지 않는 키
** 특징) 1) 암호화 통신시에 키값을 데이터에 같이 전달.
(데이터의 사이즈 변화가 존재함)
2) 데이터 통신용으로 사용하지 않고 , 인증에 많이 사용됨.
3) 대칭형 암호화 통신을 위한 키 교환에 사용됨
중요 포인트(이슈) >>> 암호화 통신을 위해서 전달받은 공개키가
정말 상대방이 맞아? (PKI : 공개키 기반구조가 도입)
# SSH로 접근시 ip,pw를 입력하여 인증하는 방식이 아닌, 인증서를 기반으로 암호화 통신.
공개키 기반 인증은 id, pw(입력X)하지 않고 접근.....
# SSH 서비스
-Application 계층에서 원격 시스템에 접속하여 관리하는 서비스
-Telnet과 다르게 데이터를 암호화해서 전송함.
-포트 번호는 22번을 사용
-인증서와 암호를 통해서 인증처리를 진행.
# 현재 상황 : AWS EC2 인스턴스를 생성한 상황에서 접속은 가능하지만
ID 비밀번호 인증 방식이 아닌 인증서를 기반으로 편하게 접속하려고함
* 사전 작업
1. 설치 확인
dnf[yum] list installed sshd
or
rpm -qa | grep sshd
(우분투)
sudo apt update
sudo apt install openssh-server
2. 설치
dnf[yum] install sshd
3. 서비스 등록 시작
systemctl enable sshd[.service]
systemctl start[restart] sshd
4. 방화벽 설정
* 간략 정리
01. ssh key 생성( testuser1에 대한 RSA 키 생성)
02. .ssh 폴더로 이동후 키 생성 확인
# cd ~/.ssh
# ls -l
total 8
-rw-------. 1 testuser1 testuser1 2655 Jul 24 12:43 id_rsa
-rw-r--r--. 1 testuser1 testuser1 610 Jul 24 12:43 id_rsa.pub
(Host PC에서 접속)
03. ip_rsa.pub 파일을 authorized_keys 파일을 이름 변경
# mv ip_rsa.pub authorized_keys
** authorized_keys 는 SSH에서 인증을 위해서 사용할 키를 지정(공개키) (원격 기기에서 가지고있는 키)
비대칭형 암호화를 사용하기 때문에 접속 상대방은 공개키를 이용하여 접속해야 하고
내 서버는 개인키를 가지고 있어야함
04. 3번의 공개키를 원격기기에 저장
host PC(windows 10)에 WinSCP를 이용하여 authorized_keys (공개키)를 전달
05 . 공개키 윈도우 보안작업 (window10 기준)
(키 파일 우클릭 > 보안tab > 고급 > 상속 사용안함 > 2번째 이 개체 ~ 모두 제거 선택 >
적용 > 확인 > 고급 > 추가 > 보안주체 선택 > 선택할 개체 이름~ 입력 : cmd net user
기기이름 입력 (나는 YG) > 이름확인 > 확인 > 적용 > 확인
* ip_rsa(개인키) 파일은 보통 이름바꾸지 않음
06. vim /etc/ssh/sshd_config 수정
(우분투) AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
07. 원격 연결 (vscode이용 등등..)
* 방화벽 열었는지 체크 할 것
* 정상적으로 설정이 다 되었음에도 원격연결이 안되면 호스트pc에서
C:\Users\username\.ssh\known_hosts 삭제
5. xshell을 이용하여 인증 방식을 public key로 변환해서
다운 받은 ip_rsa.pub(authorized_keys)키를 사용하여 연결
* 상세 정리
- xshell로 서버 접속
- testuser1(생성한 테스트 사용자)로 접속
- cd ~
- ssh-keygen -t rsa
- ls -l .ssh/
- cd .ssh/
- mv id_rsa.pub authorized_keys : 이름변경
- ls -l
- sudo -i (root계정으로 접속)
- cd /home/testuser1/.ssh/
- vim /etc/ssh/sshd_config 확인
- cp id_rsa(authorized_keys) ~ec2-user/
- ls -l ~ec2-user/
- chmod 666 ~ec2-user/id_rsa(authorized_keys) (파일 권한설정)
- ls -l ~ec2-user/
- id_rsa(authorized_keys) 다운로드를 위해서 winscp 설치 및 실행
- 세션 등록
- 파일 프로토콜 scp / 호스트이름 서버 퍼블릭 dns / 포트 2222 / 사용자이름 ec2-user / 고급 선택
- 고급 ssh > 인증 > 개인키 파일 ... 버튼
- 모든파일로 변경 > ec2인스턴스 생성 시 다운되었던 key-pair 선택 > 열기
- openssh 개인 키를 putty형식으로 변환하겠냐는 팝업 > 확인 선택
- 저장 선택
- 개인키가 변환되어 저장되었다는 팝업 > 확인 선택
- 서버에 연결 및 호스트 키 캐시에 추가하냐는 팝업 > 수락
- id_rsa(authorized_keys) 다운로드 (해당파일 이름변경 권장)
- 아래 링크에서 확인하여 10번 확인하여 다운받은 암호화 파일에 보안 설정
- xshell로 접속 테스트
- 세션 등록 > 연결 > 이름 지정 /
*호스트 (중요) 서버 퍼블릭 ipv4 ip로 지정 해야함 public ipv4 dns 오류 생김
- 사용자인증 > public key 체크 > 설정
- 가져오기 > 저장한 rsa 암호화 파일(authorized_keys) 선택
- 수락
* 참고할 만한 사이트
댓글
댓글 쓰기