[AWS] 비대칭 암호화 방식을 이용한 ssh 로그인 인증~~()_rsa enc login certification_--++

** 비대칭 암호화 방식을 이용한 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) 선택



- 확인 



- 확인 



- 연결 



- 수락

- 세션 연결 성공


* 참고할 만한 사이트 



댓글

T O P