Raspberry Pi

Raspberry Pi 3 ssh 보안 키 접속

LimeLee 2018. 8. 21. 17:02

최근 aws이나 gitlab에선 ssh 키로 접속을 하는 경우가 많은 것 같다.

아직까진 테스트 DB나 웹 서버로 이용 중인 Raspberry Pi라 외부인의 접속도 불필요하고

패스워드도 안 쳐도 되니 여러모로 편리할 거 같아 만들어 보았다.


서버와 접속할 PC에 생성한 키가 각각 있어야 한다. 전송하기 편한 곳에서 만들어서 분배하면 편하다.

개인적으로 사용하기 편한 라즈베리 서버에서 만든다.




1. 개인키, 공개키 생성


$ssh-keygen -t rsa

명령어를 통해 key를 만든다 암호화 방식은 rsa 방식을 이용

어디에 저장할건지, 어느 이름으로 저장할건지 물어보는데 아무것도 입력하지 않을 시 기본은

/home/(user)/.ssh/ 디렉토리에 id_rsa 파일로 생성된다.

다음엔 password를 물어보는데 아무것도 입력하지 않을 시 패스워드를 생성하지 않는다.


RSA 개인키, 공개키 생성


키가 제대로 생성되었다면 만든 디렉토리를 확인하자

개인키와 공개키(.pub)가 생성되어 있다면 제대로 만들어 진 것이다.

.ssh(./), authorized_keys , known_hosts의 경우 권한을 미리 맞춰주도록한다.

각각 700, 600, 644이다. 없다면 파일을 만들어 주도록 하자


.ssh 디렉토리


개인키와 공개키가 있는데 이 중 ssh로 접속할 서버는 공개키를 가지고 있어야 하고,

개인키는 ssh로 접속을 시도할 서버는 개인키를 가지고 있어야 한다.

내 라즈베리 파이 서버는 접속할 서버니까 공개키를 가질 것이고, 개인용 PC는 개인키를 받아야한다.




2. sshd 설정 변경


먼저 서버에서 할 작업을 한다.

공개키를 홈 디렉토리의 .ssh 디렉토리에 autoroized_key에 넣는다.

$ cat ~~.pub >> authorized_keys


이는 후에 설정할 /etc/ssh/sshd_config 파일에서 경로 설정이 authorized_keys파일로 정해져있기 때문이다.

물론 이 경로 설정은 고정이 아닌 config 파일에서 변경할 수 있으므로 authorized라는 파일 외의 다른 파일을 이용할 거면 

다른 파일의 권한을 600으로, config 파일에서 경로를 다른 파일의 경로로 변경해주면 된다.


공개키 등록


이렇게 하면 접속을 할 때, 개인키를 가지고 있으면 패스워드를 물어보지 않고 바로 접속이 되어야하는데

안되는 경우가 있다. 이럴 경우에는 /etc/ssh/sshd_config에 들어가서

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeyFile %/.ssh/authorized_keys


PasswordAuthentication no

를 적어준 뒤


$ service sshd restart

서비스를 재시작한다.


/etc/ssh/sshd_config 설정




3. 개인키 ppk 파일 생성



 https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html


이제 접속을 시도할 서버에서 해야할 작업이다.

 ssh 접속을 할 때 사용하는 프로그램으로 PuTTY를 사용할 경우에 한해서이다.

여기서는 puttygen.exe와 개인키가 필요하다.

개인키는 만들어진 키 중에 .pub 확장자를 가지지 않은 다른 키이다.


가져오는 데 성공했다면 puttygen.exe를 실행하여 Load 버튼을 통해 가져온 개인키를 불러온다.


puttygen.exe 화면


가져왔다면 Key 박스 쪽에 개인키에 대한 정보가 나오고 Key comment와 Key passphrase를 입력할 수 있는 textbox가 생성된다.

Key comment의 경우 위로 만들어진 인증서를 통해서 ssh 접속을 할 경우 뜨는 코멘트다. 

Key passphrase는 key를 생성할 때 패스워드를 생성했을 경우 패스워드를 입력해주면 된다.


개인키 불러오기


Save private key 버튼을 통해 개인 키(ppk 파일)을 생성해주면 된다.

접속하고 싶은 PC가 여러 대인 경우 이 ppk 파일을 공유하면 된다.(접속 PC가 전부 Windows이고 putty를 이용할 때)


생성된 ppk 파일


개인 키가 잘 생성되었다면 putty에서 설정을 해주어야한다.

기존에 저장한 세션이 있다면 불러와서 조금 수정해주어도 된다.


host와 port 설정은 다 동일하다.

Connection -> SSH - Auth로 들어가면

Authentication parameters 부분에 경로를 설정해주는 부분이 있다.

이 부분에 자신의 개인키를 넣어준 뒤, 세션에 저장한다.

매번 경로를 지정하고 연결해도 되지만 귀찮으니 세션에 저장해서 사용하자 

Open 버튼을 누르기 전에 Session 메뉴로 돌아가서 저장해주면 된다. 


putty 연결 설정


설정이 제대로 되었다면 개인키에 썼던 코멘트가 출력되고 패스워드 입력없이 로그인 되는 것을 확인 할 수 있다.


ssh 연결 화면