본문 바로가기
About Computer/서버관리

OpenSSH Public Key Authentication

by leanu 2015. 8. 13.

Introduction


기존 SSH 로그인 방식이 SSH 공격(예를들면 무작위 아이디와 비번으로 여러번 접속시도)에 취약하기때문에 나온 방식으로, key 파일이 되는 것을 생성한 후 접속 client 와 접속할 server에 두고 이를 이용하여 SSH를 접속하는 방식이다.

How to


0. 환경설정

a. 우선 ssh 명령이 먹어야 한다. OpenSSH 가 깔려있는지 확인해본다.
b. public key 를 설정한 후에는 SSH를 통한 로그인 부분은 전부 막아놔야 한다.



1. 키 생성 (클라이언트에서 해야할 일)

client$  mkdir ~/.ssh
client$  chmod 700 ~/.ssh
client$  ssh-keygen -q -f ~/.ssh/id_rsa -t rsa
Enter passphrase (empty for no passphrase):  
Enter same passphrase again:
client$  chmod go-w ~/
client$  chmod 700 ~/.ssh
cilent$  chmod go-rwx ~/.ssh/*

공식 사이트에서는 passphrase는 16글자 이상을 권고하고 있지만, 빈칸을 넣는 경우 암호없이 바로 접근할 수 있어서 편하다. 혹시 다른곳에서 키를 암호없이 생성해서 접근가능하지 않을까하는 걱정이 생길수도 있는데, 같은 서버내의 다른계정, 다른 서버내에서 같은계정으로 테스트해보았지만 접속이 되지 않았다. 즉, 암호없이 써도 안전하다. 게다가 암호를 넣게되면 나중에 추가적으로 해야할 귀찮은 일들이 있기 때문에 여기서는 암호없이 쓰는 것만 기술한다.



2. 키 설정 (서버에 해야할 일)

이제 클라이언트에서 생성한 키를 서버에 등록하는 과정이 남았다. 우선 key.pub 를 scp 를 통하여 서버의 자신의 계정에 복사해 둔다. yourid 는 서버내의 자신의 계정이다. 폴더는 자신의 홈폴더(기본적으로 /home/yourid)를 지정하면 된다.

client$  scp ~/.ssh/id_rsa.pub yourid@server.example.com:/home/yourid/

이제 서버에서 해당 key파일을 권한 인식 부분에 붙여넣어야 한다. 이때 cat >> 연산을 이용해서 authorized_keys 에 append 하게 되는데, 이를 통해 여러 클라이언트에서 생성한 키를 한곳에서 관리하게 된다.

server$  mkdir ~/.ssh
server$  chmod 700 ~/.ssh
server$  chmod g-w $HOME
server$  cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
server$  chmod 600 ~/.ssh/authorized_keys
server$  rm ~/id_rsa.pub

이제 접속 테스트를 해보자. 암호를 묻지 않고 바로 받아온다. ㅋㅋ 이외에도 프로그램중에 ssh 계정접속을 필요로 하는 프로그램들은 모두 암호를 묻지않게 된다. (대환영 ㅋㅋ)

client$  ssh yourid@server.example.com

Tip. 현재 설정한 .ssh 디렉토리를 다른 클라이언트의 디렉토리에 복사해도 다른 클라이언트에서 서버로 SSH 접속이 가능하다. 그래도 보안상 하는 것이므로 이왕이면 한개의 키로 모든 클라이언트에게 돌리는것 보단 귀찮더라도 각 클라이언트당 하나씩 키를 만들어 등록해 사용하길 바란다.

이로서 key 를 통한 ssh 접속설정 및 테스트를 해보았다. 간편한 접속과 좀 더 강화된 서버관리는 이를 사용하는 충분한 메리트가 되지 않을까 싶다. 집에 있는 서버에도 적용을 시켜야 겠다. ㅋ



Related Site



댓글