[Linux] Ubuntu: ssh 환경 구성하기

ubuntu 환경에서 ssh 서버를 구성해서 외부 접속이 가능하도록 만드는 방법을 정리한다.




ssh 서버 설치

서버가 설치되어있지 않다면 먼저 설치해줘야 한다.
패키지 매니저를 통해 설치한다.

sudo apt install openssh-server -y

설치 후에 systemctl status로 ssh 데몬이 잘 떠있는 것을 확인하면 설치 자체는 잘 진행된 것이다.





방화벽 설정

우분투 방화벽 도구인 ufw를 통해서 ssh 포트만을 열어준다.


아무것도 하지 않았다면 이렇게 꺼져있을 확률이 높다.

열고 ssh만 허용해주자

sudo ufw enable
sudo ufw allow ssh

그래서 이런 식으로 뜨면 잘 뜬 것이다.




패스워드로 접속

ssh client로 접속하려면 그냥 설정해놓은 계정 정보를 통해 로그인할 수 있다.

보안적으로는 취약할 수는 있지만, 내부망으로만 열어둘 거라면 이게 편리하고 좋을 수도 있다.




패스워드 접속 막기

패스워드로 들어가는게 편리하긴 하지만, 외부망에 오픈할 거라면 보안적으로는 좋지는 않은 방법이다.
가장 권장되는 방법은 패스워드 접근을 막아두고 key 접속만 열어두는 것이다.

패스워드를 잠그려면 sshd_config 파일을 열어서

 sudo vi /etc/ssh/sshd_config

저기 PasswordAuthentication 값을 no로 깔아줘야 한다.
주석쳐져있으면 yes라서 열린다.

그리고 재부팅하면

sudo systemctl restart sshd

이제는 패스워드 접근이 안될 것이다.




Key 접속 설정하기

먼저 openssh 도구를 통해 키를 생성해준다. 이름은 ssh-key로 하겠다.

ssh-keygen -t rsa -b 2048 -f ssh-key -m pem

그럼 이렇게 pem 키와 pub 키가 생성될 것이다.
pub는 서버가 들고 쓰고, pem 키는 클라이언트가 접속할때 사용된다.

다음에는 authorized_keys라는 특수한 키 허용 파일을 만들어서 권한을 적당히 주고

sudo touch ~/.ssh/authorized_keys
sudo chmod 644 ~/.ssh/authorized_keys

그 안에다가 pub 파일의 내용물을 그대로 복붙해준다.

sudo vi ~/.ssh/authorized_keys

authrized_keys 파일은 특수하게 기본값으로 예약되어있는 설정파일인데, 원한다면, sshd_config에서 직접 지정해서 사용할 수도 있다.

sudo vi /etc/ssh/sshd_config

그리고 재실행하면

sudo systemctl restart sshd

이제는 pem 키를 통해 접속이 가능할 것이다.