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 접속이 정상적으로 되는 것을 확인할 수 있습니다.

+ Recent posts