2007년 4월 1일 일요일

ssh keychain

내 컴퓨터에서 다른 컴퓨터로 ssh로 login을 할 때 매번 암호를 물어 보는게 귀찮은 경우 사용한다.
주로, cvs나 svn을 ssh를 이용하여 사용할 때 유용한데, cvs의 경우 update, commit 등 각 명령어 마다 ssh 암호를 물어 본다. 이건 아주 귀찮은 작업이다.

  • 먼저 사용중인 컴퓨터를 위한 공개키/개인키를 생성한다.
일단 키를 생성한다. 다음 명령어를 사용하여 진행한다.

$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/king/.ssh/id_dsa): (hit enter)
Enter passphrase (empty for no passphrase): (enter a passphrase)
Enter same passphrase again: (enter it again)
Your identification has been saved in /home/king/.ssh/id_dsa.
Your public key has been saved in /home/king/.ssh/id_dsa.pub.
The key fingerprint is:
a4:e7:f2:39:a7:eb:fd:f8:39:f1:f1:7b:fe:48:a1:09 king@blue
키는 $HOME/.ssh 디렉토리에 생성되며, id_dsa는 개인키이고, id_dsa.pub 는 공개키다.
  • 공개키를 접속하기를 원하는 컴퓨터에 등록한다.
생성된 공개키 id_dsa.pub 파일을 Target의 $HOME/.ssh/authorized_keys 에 추가한다.
추가 방법은 다음과 같다.

$ scp $HOME/.ssh/id_dsa.pub user@target:~/.ssh
$ ssh user@target
$ cat .ssh/id_dsa.pub >> .ssh/authorized_keys
이제 접속을 하면 조금 다른 인증 과정을 거친다. 키를 만들때 등록한 암호를 통하여 접속하게 된다.

$ ssh user@target
Enter passphrase for key '/home/king/.ssh/id_dsa':

여기까지의 결과는 일반적인 접속 방식과 크게 다를 바가 없다. 하지만, 생성된 키를 keychain을 통해 관리하게 되면 상황이 달라진다.
  • keychain을 이용하여 키를 관리하도록 한다.
먼저 keychain을 설치한다. 사실 진실로 키를 관리하는 것은 ssh-agent 라는 놈이다. 이놈이 키를 관리하지만, 이러한 관리에 도움을 주는 도구가 keychain이다.
keychain을 사용하면, session 형태의 관리를 지원하므로, 한번의 설정으로 접속시 물어보는 암호 확인 절차를 생략할 수 있다.

다음과 같은 명령으로 keychain을 실행한다.

$ /usr/bin/keychain id_dsa
Copyright 2002-2004 Gentoo Foundation; Distributed under the GPL

* Initializing /home/king/.keychain/blue-sh file...
* Initializing /home/king/.keychain/blue-csh file...
* Initializing /home/king/.keychain/blue-fish file...
* Starting ssh-agent
* Initializing /home/king/.keychain/blue-sh-gpg file...
* Initializing /home/king/.keychain/blue-csh-gpg file...
* Initializing /home/king/.keychain/blue-fish-gpg file...
* Starting gpg-agent
* Error: Failed to start gpg-agent
* Adding 1 ssh key(s)...
Enter passphrase for /home/king/.ssh/id_dsa: (enter a passphrase)

$ source $HOME/.keychain/tal-sh
$ ssh user@target

이 명령어 중에 keychain을 실행 시키는 명령은 단 한번만 실행하면 되고, tal-sh를 실행 시키는 과정은 .bashrc 에 등록하여 매번 shell이 동작할 때 마다 해 주어야 하는 작업이다.

keychain이 동작시 생성되는 환경 변수를 $HOME/.keychain 디렉토리에 저장한다. 이 환경 변수를 설정하면 암호 확인 없이 target에 접속할 수 있게 된다.

때문에, .bashrc에 다음과 같은 간단한 명령을 추가하는 것이 좋다.

if [ -f $HOME/.keychain/tal-sh ]; then
source $HOME/.keychain/tal-sh
fi

더불어 keychain을 간단히 다음과 같이 등록하여 사용해도 좋다.

keychain() {
/usr/bin/keychain id_dsa
source $HOME/.keychain/tal-sh
}

댓글 없음: