상세 컨텐츠

본문 제목

25.03.06. 서버 관리자를 위한 SSH 설정: 키 기반 인증과 프록시 서버 사용법

AWS CLOUD SCHOOL 9기

by AI Engineer crystal 2025. 3. 6. 23:16

본문

인터넷에 직접 연결되므로 IP 주소, 서브넷 마스크, 게이트웨이, DNS 모두 필요합니다.
인터넷 연결이 없으므로 IP 주소와 서브넷 마스크만 필요하고, 게이트웨이나 DNS는 필요하지 않습니다.

 

rocky1은 1개의 Bridge와 1개의 NAT 네트워크를 소유합니다. Bridge는 Public IP를 가지고 인터넷을 사용합니다. NAT의 경우 내부에서 외부로 나갈 수 있지만 기본적으로 외부에서 접속이 불가하기 때문에 보안을 위해 rocky1을 로드밸런서 역할로 rocky2를 보호합니다. 

B

# [hostname 변경하기]
[root@rocky1 ~]# hostnamectl set-hostname rocky1.crys.pri
[root@rocky1 ~]# vi /etc/hostname
rocky1.crys.pri

# 이름으로 통신하기
[root@rocky1 ~]# gedit /etc/hosts
211.183.3.11	test1

# alias 설정
[root@rocky1 ~]# echo "alias p='ping'" >> ~/.bashrc

# 비밀번호 입력하지 않게 하기
[root@rocky1 ~]# chmod u+w /etc/sudoers
[root@rocky1 ~]# vi /etc/sudoers
108 user1        ALL=(ALL)       NOPASSWD: ALL
[root@rocky1 ~]# chmod u-w /etc/sudoers

 

# SSH를 통한 로그인 시 비밀번호 인증을 사용하지 않도록 설정하는 옵션
[root@rocky1 ~]# vi /etc/ssh/sshd_config
71 PasswordAuthentication no

 

즉, 이 설정은 SSH를 통해 서버에 접속할 때 비밀번호를 통한 로그인을 금지하고, 키 기반 인증과 같은 다른 인증 방법만 허용하게 됩니다. no로 설정하면 비밀번호 인증이 비활성화되며, 대신 공개 키 기반 인증이나 기타 인증 방법을 사용해야만 접속할 수 있습니다.

보안상 이유로 비밀번호 인증을 비활성화하고 공개 키 인증을 사용하는 것이 권장됩니다.

 

SSH 클라이언트의 ~/.ssh/config 파일에 작성된 내용으로, 여러 SSH 호스트에 대한 설정을 정의하는 것입니다. 각 Host 블록은 특정 호스트에 연결할 때 사용할 옵션들을 설정합니다.

1. Host rocky1.crys.pri

Host rocky1.crys.pri
    User user1
    Hostname 192.168.2.26    # bridge를 사용하기 때문에(hostname -I로 확인)
    IdentityFile ~/cryskey.pem
    StrictHostKeyChecking no
  • Host rocky1.crys.pri: rocky1.crys.pri라는 호스트 이름에 대해 설정을 정의합니다. 이 설정은 ssh rocky1.crys.pri 명령을 실행할 때 사용됩니다.
  • User user1: rocky1.crys.pri에 연결할 때 user1 사용자로 로그인합니다.
  • Hostname 192.168.2.26: 실제로 연결할 IP 주소입니다. 이 IP 주소는 rocky1.crys.pri라는 호스트 이름을 사용할 때 연결될 서버의 IP입니다.
  • IdentityFile ~/ksmkey.pem: ~/cryskey.pem 파일을 SSH 키로 사용하여 인증합니다.
  • StrictHostKeyChecking no: 호스트 키 확인을 생략합니다. 즉, 처음 접속하는 서버의 SSH 키를 자동으로 받아들이고 확인하지 않습니다. 이는 보안상 좋지 않은 설정일 수 있습니다.

2. Host rocky2.crys.pri

Host rocky2.crys.pri
    User user1
    Hostname 211.183.3.12    
    IdentityFile ~/cryskey.pem
    StrictHostKeyChecking no
    ProxyCommand ssh -q -W %h:%p rocky1.crys.pri
  • ProxyCommand ssh -q -W %h:%p rocky1.ksm.pri: 이 설정은 rocky2.crys.pri에 직접 연결하지 않고, rocky1.crys.pri를 통해 연결합니다. ProxyCommand는 SSH 연결을 중계하는 명령으로, rocky1.crys.pri를 통해 rocky2.crys.pri에 접근하도록 설정합니다. -q는 SSH의 출력에서 경고나 에러 메시지를 숨기고, -W %h:%p는 rocky2.crys.pri의 호스트와 포트를 rocky1.crys.pri로 전달하여 연결을 중계합니다.

이 설정은 외부에서 내부로 접근할 때 보안을 위해 로드밸런서(rocky1.crys.pri)를 통해서만 rocky2.crys.pri에 접근할 수 있도록 만드는 구성을 의미합니다.

관련글 더보기