1. SSH 설치, 포트 변경하기, 방화벽 등록
서버에 우분투를 설치했으면, 외부에서 터미널을 이용해 접속을 할 수 있도록 SSH 설정을 해주어야 합니다. 먼저 터미널을 실행하고, 아래와 같이 SSH 서버를 설치해 줍니다.
sudo apt-get update
sudo apt-get install openssh-server
SSH 기본 포트는 22번 포트인데 이 포트를 그대로 사용하는 것은 보안 상 좋지 않기 때문에 22번 포트가 아닌 다른 포트를 사용해 주는 것이 좋습니다. 포트를 변경하기 위해서 아래의 명령어를 이용해 ssh 설정 파일을 수정해 줍니다.
sudo vim /etc/ssh/sshd_config
저는 기본 vi 에디터보다 vim에디터를 선호하지만, vi나 nano를 이용해도 됩니다. 에디터가 실행되었으면 i를 눌러 insert 모드에 진입하고 기본포트가 적혀있는 #Port 22 아래에 원하는 포트번호를 입력합니다. 그다음 esc를 눌러서 insert 모드에서 빠져나온 후 :wq를 입력해서 저장을 해줍니다.
포트 번호 수정이 완료되었다면 이제 SSH에 접속할 때 아래와 같이 '-p <포트번호>'를 붙여서 접속합니다.
ssh -p <포트 번호> username@ip주소
마지막으로 방화벽을 활성화하고 설정한 SSH 포트를 허용해 줍니다.
sudo ufw enable
sudo ufw allow <포트 번호>
sudo ufw reload
sudo ufw status
만약 서버의 ip 주소를 모르겠다면 net-tools를 설치한 후에 ifconfig 명령어를 통해서 확인할 수 있습니다.
sudo apt install net-tools
ifconfig
2. SSH 키 등록하고 비밀번호 접속 막기
SSH 키를 생성해서 키를 가지고 있는 사용자만 접속할 수 있게 하면 로그인할 때 굳이 비밀번호를 입력하지 않아도 되고 보안을 크게 향상시킬 수 있습니다. 이 작업은 외부 컴퓨터에서 SSH 접속을 한 상태에서 진행하면 키 파일을 따로 추출하지 않아도 키 내용을 복사해서 Termius에 바로 붙여 넣을 수 있기 때문에 서버 내부가 아닌 SSH 터미널에서 진행하시는 것을 권장합니다. 먼저 터미널에서 아래의 명령어를 입력해서 개인키를 생성해 주세요.
ssh-keygen -t rsa -b 4096 -m PEM
'Enter passphrase (empty for no passphrase)' 입력 창에서 아무것도 입력하지 않고 Enter를 누르면 비밀번호가 없는 키가 만들어지고, 비밀번호를 입력하면 비밀번호가 있는 키가 만들어집니다. 비밀번호를 만들어도 나중에 접속 프로그램에서 설정해 줄 때 한 번만 입력하면 되기 때문에, 저는 비밀번호가 있는 키를 만들었습니다. 비밀번호 입력까지 마치고 Enter를 누르면 아래와 같이 키가 생성된 것을 볼 수 있습니다.
cat 명령어를 이용해서 id_rsa.pub 파일의 public key 내용이 출력되면 Ctrl+Shift+C를 눌러서 복사를 해줍니다. 그리고 echo "public key" 부분에 복사한 내용을 Ctrl+Shift+V를 이용해서 붙여 넣으면 authorized_keys 파일에 public key가 추가됩니다. 다시 cat 명령어를 통해 authorized_keys의 내용을 확인해 보면 붙여넣기한 공개 키가 잘 등록된 것을 볼 수 있습니다.
cat ~/.ssh/id_rsa.pub
echo "public key" >> ~/.ssh/authorized_keys
cat ~/.ssh/authorized_keys
.ssh폴더 안에는 authorized_keys, id_rsa, id_rsa.pub 파일이 있습니다. id_rsa 파일은 private key 파일이고 id_rsa.pub 파일은 public key 파일입니다. 나중에 다른 컴퓨터에서 ssh를 이용해 접속하기 위해서는 private key인 id_rsa 파일이 필요하니 파일을 따로 복사해 두거나 아래와 같이 cat 명령어를 이용해서 파일의 내용을 복사해두어야 합니다.
cat ~/.ssh/id_rsa
등록을 마쳤으면 이제 ssh 설정에 들어가서 비밀번호로 로그인하는 기능을 막아야 합니다. 다시 에디터를 이용하여 sshd_config 파일의 설정을 변경해 줍니다.
sudo vim /etc/ssh/sshd_config
설정 파일이 열렸으면 i를 눌러 insert 모드로 들어가서 #로 주석처리 되어있는 부분을 수정해 줍니다.
먼저 PubkeyAuthentication을 Yes로 바꿔주고, AuthorizedKeysFile 부분이 주석처리가 되어있는 것을 #를 삭제해서 해제해 줍니다. 그다음 PasswordAuthentication을 no로 바꿔주면 비밀번호를 이용하여 로그인을 할 수 없게 되고 키가 있어야만 로그인이 가능해집니다. 수정을 다 했다면 esc를 누른 후에 :wq를 눌러 저장을 하고 에디터를 빠져나옵니다.
참고로 PermitRootLogin을 no로 설정하면 root 계정으로 로그인이 불가능해지고, prohibit-password로 설정하면 키를 가지고 있는 사용자의 root 계정 로그인만 허용합니다. 이미 키를 사용해서만 로그인이 되게 해 놨기 때문에 굳이 수정하지는 않았습니다.
3. Termius를 이용해서 SSH 접속하기
SSH 접속 프로그램으로 putty와 같은 프로그램을 많이 사용하지만, 저는 UI가 예쁘고 한 번 설정해 두면 맥과 윈도우, 리눅스 모두에서 사용할 수 있는 Termius를 더 선호하는 편입니다. Termius를 이용해서 발급받은 키를 이용해 SSH 접속을 하는 과정은 다음과 같습니다.
먼저 프로그램을 설치해서 로그인을 한 후에 NEW HOST를 눌러서 HOST 등록을 해줍니다. Address 부분에는 SSH 서버의 IP를 입력해 줍니다. SSH on <포트 번호> port에서 위에서 설정해 준 SSH의 포트 번호를 입력하고, Username을 입력해 줍니다.
'+ Key, Certicicate, FIDO2' 버튼을 클릭해서 Key를 선택하고 label 이름을 입력한 후 엔터를 누르면 아래와 같이 New Key 화면으로 넘어갑니다. import 탭에서 Import from key file을 눌러서 서버에서 복사해 온 id_rsa 파일을 가져오거나, 복사한 id_rsa 파일의 private key 내용을 Paste 탭을 눌러서 Private key 부분에 붙여넣기를 해줍니다. 만약 앞에서 설정해 준 Passphrase가 있다면 입력해 줍니다.
키 입력이 완료되면 다시 Host 설정창으로 돌아와서 Connect를 누르면 SSH 접속이 정상적으로 되는 것을 확인할 수 있습니다.
'코딩 공부 > 미니 PC 서버' 카테고리의 다른 글
[미니 PC 서버] Nginx 버전 정보 감추기 + Cloudflare로 서버 IP 감추기 (0) | 2024.09.10 |
---|---|
[미니 PC 서버] 구입한 도메인을 서버에 연결하기 + HTTPS(SSL/TLS) 적용하기 (0) | 2024.09.08 |
[미니 PC] 5. FIREBAT AM02 개봉기 4편 - Hagibis IPS 미니 모니터 연결 (0) | 2024.09.04 |
[미니 PC] 4. FIREBAT AM02 개봉기 3편 - Wicgtyp SSD, FIREBAT SSD Enclosure (0) | 2024.09.04 |
[미니 PC] 3. FIREBAT AM02 개봉기 2편 - 윈도우 재설치 (드라이버, 시디키 백업), CMOS(BIOS) (3) | 2024.09.04 |