본문 바로가기
카테고리 없음

[ubuntu] ssh 설치

by KEI NETWORK 2019. 6. 26.
728x90

Telnet은 서버와 클라이언트 사이에 오가는 데이터를 암호화하지 않는다는 심각한 보안 결함이 있습니다.

그래서 실제 서비스를 하는 서버에 접속할 때는 SSH를 사용해야 합니다.

우분투 리눅스엔 SSH 클라이언트는 기본으로 설치되어있지만, SSH 서버는 설치해야 합니다.

클라이언트가 설치된 컴퓨터로 서버가 설치된 컴퓨터에 원격 접속하는 것입니다.

SSH 서버 실행 파일은 /usr/sbin/sshd이고, SSH 클라이언트 실행 파일은 /usr/bin/ssh입니다.

d가 붙은 건 상주하는 프로그램, 데몬이란 뜻입니다.

계속 작동하고 있어야 클라이언트가 접속 요청을 했을 때 알아챌 수 있겠죠.

아래가 이 글에서 다룰 내용입니다.

  • SSH 서버 설치
  • SSH 서버 설정 파일 일부만 알아보기
  • 아이디와 비밀번호로 접속하기
  • 공개키 인증 방식으로 접속하기

SSH 서버 설치

SSH 클라이언트는 기본으로 있으니 서버만 설치하려면 다음 명령을 입력합니다.

open이 붙은 이유는 상용 SSH과 달리 오픈 소스로 제공된 부분으로 만든 오픈 소스 SSH이기 때문입니다.

 

1

sudo apt-get install openssh-server

SSH 클라이언트와 서버를 동시에 설치 또는 업데이트하려면 다음처럼 입력합니다.

 

1

sudo apt-get install ssh

SSH 서버 설정 파일 일부만 알아보기

/etc/ssh/sshd_config가 설정 파일입니다. 열어봅시다.

 

1

sudo vim /etc/ssh/sshd_config

SSH의 기본 포트는 22번입니다. 변경하면 접속할 때 명시적으로 지정해야 합니다.

 

1

Port 22

ListenAddress의 주석을 지우고 특정 IP 주소를 넣으면 해당 주소에서만 접속할 수 있습니다. 기본값은 모두 허용입니다.

 

1

#ListenAddress 0.0.0.0

SSH 프로토콜 1의 개정판인 2를 사용합니다. 1과는 호환되지 않습니다.

보안 문제가 있어 1을 사용하지 않지만 둘 다 쓰려면 1, 2처럼 쓰면 됩니다.

 

1

Protocol 2

SSH 접속에 사용하는 서버의 키의 위치로, 클라이언트가 접속 시 아래 네 가지 방식으로 암호화된 호스트 키 중 기본값인 ECDSA 방식으로 암호화된 호스트 공개키가 클라이언트의 홈 디렉터리/.ssh/known_hosts 파일에 저장됩니다.

 

1

2

3

4

HostKey /etc/ssh/ssh_host_rsa_key

HostKey /etc/ssh/ssh_host_dsa_key

HostKey /etc/ssh/ssh_host_ecdsa_key

HostKey /etc/ssh/ssh_host_ed25519_key

호스트 공개키는 위 파일명 끝에 .pub이 붙어있습니다. (예-ssh_host_ecdsa_key.pub)

따라서 서버에서 이 호스트 키가 변경되면 접속한 적이 있는 클라이언트에선 원격 호스트의 인증서가 변경되었다는 오류가 뜹니다.

이럴 땐 아래 명령으로 클라이언트에 남아있는 호스트 키를 삭제하고 재접속하면 됩니다.

 

1

ssh-keygen -R 아이디@서버주소

계속해서 설정 파일을 알아봅시다.

관리자 계정인 root로 로그인을 허용하면 yes, 아니면 no, 기본값은 공개키 인증 방식이 아닌 아이디와 비밀번호로 로그인할 때만 금지합니다.

 

1

PermitRootLogin prohibit-password

공개키 인증 방식을 사용하려면 기본값을, 아이디와 비밀번호로만 로그인하려면 주석 처리합니다.

 

1

PubkeyAuthentication yes

공개키 인증 방식으로 접속하려는 클라이언트는 먼저 서버의 AuthorizedKeyFile 속성 경로에 공개키를 저장해야 합니다. 기본 경로는 주석과 같으며 %h는 사용자 홈 디렉터리입니다.

 

1

#AuthorizedKeysFile %h/.ssh/authorized_keys

호스트 기반 인증 방식을 사용하려면 yes로 합니다. 보안 문제로 권장하지 않습니다.

SSH 인증 방식은 아이디, 비밀번호로 하는 패스워드 인증, 공개키 인증, 호스트 인증 방식이 있습니다.

 

1

HostbasedAuthentication no

패스워드 인증 방식을 사용하려면 기본값인 주석 그대로 놓아둬도 되고 아니라면 no로 바꿉니다.

 

1

#PasswordAuthentication yes

설정 파일을 변경했다면 다음 명령으로 서비스를 재시작합니다.

 

1

sudo service ssh restart

아이디와 비밀번호로 접속하기

먼저 SSH 서버는 포트 22번을 사용하니 해당 포트는 열려있어야 합니다.

방화벽을 쓴 적이 없다면 먼저 방화벽을 활성화하고 22번 포트를 열어줍니다.

 

1

2

sudo ufw enable

sudo ufw allow 22

SSH 클라이언트가 있는 원격 컴퓨터에서 아래 명령으로 접속할 수 있습니다.

 

1

ssh 아이디@서버주소

일단은 스스로 접속해볼 수도 있습니다.

 

1

2

ssh 아이디@localhost 또는

ssh 아이디@본인IP주소

처음 접속하는 서버라면 계속하겠냐고 묻고, 이어서 비밀번호를 치면 접속이 됩니다.

설정 파일에서 기본 포트 번호인 22번이 아닌 다른 포트로 바꿨다면 -p 옵션을 더합니다.

 

1

ssh 아이디@서버주소 -p 변경한포트번호

원격 컴퓨터에서 명령 하나만 실행하고 바로 돌아오려면 명령을 뒤에 붙여줍니다.

 

1

ssh 아이디@서버주소 서버에서실행할명령

공개키 인증 방식으로 접속하기

먼저 클라이언트의 공개키, 개인 키가 있어야 합니다.

다음 명령으로 공개키, 개인 키 쌍을 만듭니다.

 

1

ssh-keygen

Enter file in which to save the key 부분에 키를 저장할 위치를 정할 수 있는데 엔터로 넘기면 기본값인 ‘홈 디렉터리/.ssh/’가 됩니다.

Enter passphrase 에 비밀번호를 입력하면 키를 이용할 때 비밀번호를 써야 하고 엔터로 넘기면 그런 과정은 생략됩니다. 로그인 비밀번호와는 다릅니다.

다음 명령으로 클라이언트의 공개키를 서버에 보냅니다.

 

1

ssh-copy-id 아이디@서버주소

당연하지만 보내려고 패스워드 인증 방식을 사용하는 중이니 서버의 비밀번호가 필요합니다.

서버에 클라이언트의 공개키가 들어있는 홈 디렉터리/.ssh/authorized_keys 파일이 생겼습니다.

이제 클라이언트에서 ‘ssh 아이디@서버주소’로 접속하면 패스워드 인증 방식이 아니라 공개키 인증 방식을 사용하여 접속합니다.

그 전에 개인키를 사용하기 위한 Passphrase를 입력했다면 이를 요구하고 아니라면 바로 접속이 됩니다.

공개키를 등록하지 않은 클라이언트가 ssh로 접속하려 하면 패스워드 인증 방식으로 접속을 시도합니다. 물론 두 인증 방식을 모두 허용하는 기본 설정일 때 말이죠.

따라서 공개키 인증 방식으로만 접속을 허용하고 패스워드 인증 방식은 막으려면 위에서 설명한 SSH 서버 설정 파일에서 패스워드 인증 방식을 막으면 됩니다.

 

1

2

3

4

sudo vim /etc/ssh/sshd_config

//다음을 변경

//기본값은 #PasswordAuthentication yes

PasswordAuthentication no

728x90

댓글