개발/Linux

Linux - SSH (개인키, 공개키 2)

잇(IT) 2022. 4. 4. 19:39
728x90

- 이번 포스팅은 SSH에 대해 알아 볼 것이다. 이전에 SSH에 대해 한 번 포스팅한적이 있지만 조금 더 자세하게 다시 포스팅 해보려 한다.

SSH는 Secure Shell의 줄임말로, 원격 호스트에 접속하기 위해 사용되는 보안 프로토콜이다.

SSH를 개인키와 공개키를 이용하여 원격 서버에 로그인을 해보는 작업을 해볼 것이다. 

 

- 메인이 되는 서버에서 개인키와 공개키를 생성한 다음 서버에 개인키는 메인이 되는 서버에 공개키는 메인 서버에 접근 할 클라이언트 서버에 부여하게 되면 다음 과정을 통해 SSH를 통해 원격지로 접속 할 수 있게 된다.


https://insoobaik.tistory.com/70

 

Linux - SSH(개인키, 공개키)

SSH 클라이언트, 서버의 통신 과정이다. OpenSSH의 설정 내용은 /etc/ssh/sshd_config에 있다. - PubKeyAuthentication yes    : 공개키 인증 설정에 대한 여부를 묻는 것이다. - AuthorizedKeyFile    ...

insoobaik.tistory.com


- HOST PC

 

- ssh-kegen 명령어를 사용하여 공개키와 개인키를 생성한다.

 

-f : 키 파일의 파일 이름을 지정

-b : 만들 키의 비트 수를 지정

-N : 새로운 암호 문구를 제공 (위에선 암호를 제공하지 않는다고 설정했다.)

-m : key의 형식을 지정 (현재 PEM 방식으로 지정했다.)

 

- dir 명령어로 HOST PC의 폴더 및 파일을 확인하게 되면 "isbaik"의 개인키와 공개키(.pub)를 확인 할 수 있다.


- linux

 

/etc/ssh/sshd_config : ssh 설정 파일을 보게되면 AuthorizedKeyFile(공개키)의 경로가 .ssh/authorized_keys로 지정되어 있기 때문에 해당 파일에 공개키 정보를 넣어줘야 한다.

 

- .ssh 디렉토리가 없기 때문에 생성해준다.


- HOST PC

 

- 생성한 공개키를 /root/.ssh/authorized_keys 파일에 scp를 사용해 복사해준다. 

 

- 생성한 개인키는 id_rsa 파일에 넣는다. id_rsa는 아래 사진을 보게되면 ssh 공개키의 기본 파일임을 알 수 있다. 이 파일에 넣게 되면 후에 -i [개인키 명]을 작성해야 하는 수고를 덜어준다.


- linux

- 다음과 같이 공개키와 개인키가 복사된 것을 볼 수 있다.

- 실제 공개키 값이 동일한지 확인해본다.

 

- 실제 개인키 값이 동일한지 확인해본다.

 

/etc/ssh/sshd_config 설정 파일에서 키 기반으로 다른 서버에 접속해보기 위해 패스워드로 로그인 하는 방식을 막고 root 계정이 로그인 하는 것을 허용한다.

 

- 변경된 설정 파일을 저장한다.

 

- 두번째 서버에 /.ssh 디렉토리가 없기 떄문에 디렉토리를 생성하고 똑같이 공개키를 scp를 이용하여 복사한다.

 

- 두번째 서버에서도 마찬가지로 키 기반 접속을 확인하기 위해 설정을 변경해준다.

 

- 키 기반으로 접속해보기 위해 ssh -i [개인키명] root@[접속할 서버 IP]를 입력해보면 처음에 오류가 나는 것을 확인 할 수 있는데 이는 개인키 파일에 대한 접근 권한이 group과 other에도 적용되어 있기 때문에 접속이 되지 않는다.

 

- 개인키는 소유주 외에 다른 사람이 알고 있으면 보안상 매우 위험하다. 그렇기 때문에 개인키 파일을 소유주만이 볼 수 있어야 한다.

- 소유주만 볼 수 있도록 개인키 파일의 권한을 다음과 같이 변경한다.

 

- 개인키 파일의 권한을 변경한 뒤 ssh로 공개키를 가진 두번째 서버로 접속하게 되면 접속이 잘 되는 것을 확인 할 수 있다.

- 두번째 서버의 공개키도 비교해보면 동일한 것을 알 수 있다.

 

- 3번째 서버에도 똑같이 키 기반 접속을 하기 위해 공개키를 복사한다.

 

- 2번째 서버와 동일하게 키 기반 접속을 확인하기 위해 다음과 같이 설정을 변경해준다.

 

- 2번째 서버에서 3번째 서버로 접속하게 되면 권한 거부가 되는 것을 볼 수 있다. 이는 두번째 서버에 개인키가 없기 때문에 2번째와 3번째 서버는 서로 대칭키 기반 암호 확인이 안되기 때문에 접속이 불가능하다.

 

- 첫번째 서버에서 세번째 서버로 키 기반 접속을 시도하게 되면 첫번째 서버는 개인키를 가지고 있고 세번째 서버는 공개키를 가지고 있기 때문에 키 기반 원격 접속이 되는 것을 확인 할 수 있다.

 

- 세번째 서버의 공개키도 비교해보면 다른 서버의 공개키와 당연히 동일한 것을 확인할 수 있다.

728x90

'개발 > Linux' 카테고리의 다른 글

Linux - HTTP  (0) 2022.04.07
Linux - SSL  (0) 2022.04.04
Linux - MAC 필터링  (0) 2022.03.30
Linux - DHCP (IP주소 예약 기능)  (0) 2022.03.30
Linux - DHCP 설정  (0) 2022.03.30