ssh 프로토콜의 인증 방법은 매우 다양하며 많이 쓰이는 방식은 다음 정도가 되겠습니다.
- RSA or DSA key pair
- keyboard-interactive
- password
이 중 keyboard-interactive / password 인증 방식은 전부 비밀번호를 이용한 인증이고, RSA/DSA 방식은 대칭키(공개키 – 비밀키)를 이용하는 방식입니다. 공개키를 등록만 해두면 여러 개의 서버에 접속할 때 각기 따로 비밀번호를 치고 로그인을 할 필요가 없으므로 매우 편리한 방식이 되겠습니다.
참고로 비밀키를 도둑맞을 때를 대비해서 비밀키에 암호를 걸어둘 수도 있습니다.
대칭키를 이용해서 로그인을 하도록 설정하려면 우선 대칭키를 만들어야 합니다. 대칭키를 만드는데는 ssh-keygen 이라는 툴에 어떤 방식의 암호화를 사용할 건지만 가르쳐주면 됩니다.
# ssh-keygen -t rsa
# ssh-keygen -t dsa
위 명령어 중 위에껄 사용하면 rsa 키가 만들어지고, 아래껄 사용하면 dsa 키가 만들어집니다. 중간에 비밀번호를 입력하라고 나오는데, 여기서 비밀번호를 입력하게 되면 그 비밀번호를 이용해서 키를 암호화 를 해놓게 됩니다. (나중에 그 키를 사용하기 위해 비밀번호를 입력해야 합니다.)
키를 ssh 서버에 등록하려면 서버의 ~/.ssh/authorized_keys 파일에다가 아까 생성한 공개키 파일(id_rsa.pub or id_dsa.pub)의 내용을 적어주기만 하면 됩니다. 간단하죠.
만약 키에 암호를 걸지 않았다면 지금 상태만으로도 아무 문제 없이 사용할 수 있지만! 키에 암호를 걸어놓았을 경우 ssh로 접속을 시도할 때마다 비밀키를 읽어오기 위해 비밀번호를 물어볼 것입니다. 비밀번호를 치는게 귀찮아서 대칭키 기반 로그인을 설정한건데 이러면 의미가 없겠죠!
이럴 때 유용하게 써먹을 수 있는게 바로 ssh-agent입니다. 비밀키를 불러들이면, 세션이 끝날 때까지 비밀키를 계속 써먹을 수 있도록 도와주는 개념이 되겠습니다. 터미널을 닫지만 않으면 그 세션 내에서는 한 번 로딩한 비밀키를 계속해서 우려먹는거죠.
# eval
ssh-agent
# ssh-add ~/.ssh/id_rsa
사용법은 위와 같은데, 여기에 약간의 문제가 있습니다. 새로운 터미널을 연다거나 터미널을 닫았다가 다시 실행시키는 경우엔 비밀키를 새로 로딩해야 하거든요. 아까보단 많이 편해졌지만 그래도 좀 귀찮죠?
하지만 걱정하실 필요는 없습니다. 이미 발빠른 아저씨들이 keychain을 만들었거든요. keychain을 이용할 경우 이미 로딩된 키가 있는지를 확인하고 로딩된 키가 발견되면 그걸 공유하게 되므로 처음 맥/PC를 켜서 한 번만 키를 로딩하게 되면 세션을 몇 번이나 열고 닫든 상관없이 계속해서 이 키를 공유하게 되니 아주 편리하죠.
### In Gentoo Linux
# emerge keychain
### in Mac OS X
# sudo port install keychain
# echo “/usr/bin/keychain ~/.ssh/id_rsa” >> ~/.bash_profile
# echo “source ~/.keychain/hostname
-sh > /dev/null” >> ~/.bash_profile
사용법은 위와 같습니다. Mac OS X 사용자들은 macports를 이용하면 되고, gentoo linux라면 emerge를 이용하면 되겠습니다.
참고자료:
OpenSSH key management, Part 1
OpenSSH key management, Part 2
OpenSSH key management, Part 3
OpenSSH key management, Part 1 번역판
OpenSSH key management, Part 2 번역판
Similar Posts:
- CentOS 삽질 후기: 잘못된 정보여 안녕!
- 당신은 어떻게 리눅스를 사용하게 되셨나요? – 1부
- 맥에서 tex 사용하기…
- ubuntu에서 letsencrypt ssl 인증서 사용하기 (with cloudflare dns)
- backup script 도 작성 완료 -_-v