Keychain/ko

이 문서는 키 모음 프로그램에서 SSH 키 공유 방식을 설명합니다. 이 글에서는 독자 여러분이 기본적인 공개 키 암호화 지식을 갖추었다고 가정합니다.

손 아귀에 쥐어진 문제
모든 시스템에 매번 로그인 할 때마다 암호를 입력하는 과정은 불편하며, 게다가 수많은 시스템을 관리할 경우 특히 그렇습니다. 일부 관리자는 스크립트 또는 크론 작업을 ssh 연결 과정을 활용하여 편하게 처리하려 합니다. 각각의 방법에 이 문제에 대한 해결책이 있으며 공개 키 인증으로 시작합니다.

공개 키 인증은 어떻게 동작할까?
클라이언트가 서버의 ssh 데몬에 연결하려 한다고 가정해보겠습니다. 클라이언트는 우선 키 쌍을 만들어 서버에 공개 키를 제공합니다. 그 다음 클라이언트가 연결을 시도할 때마다 서버에서는 공용 키로 암호화한 정보를 던져줍니다. 개인 키에 따른 홀더(클라이언트)만이 이 정보를 해독할 수 있으므로, 올바른 응답을 해야만 인증을 성공적으로 처리할 수 있습니다.

키 쌍 만들기
첫번째 절차에서는 키 쌍을 만듭니다. 이 절차를 수행하려면 명령을 활용합니다:

기본 값을 허용하고 강한 암호를 입력해보십시오.

키 쌍 만들기 절차가 끝나고 나면 에 개인 키가 들어가고  에 공개 키가 들어갑니다. 공개 키는 이제 원격 호스트에 복사할 준비가 되었습니다.

서버 준비
파일을 가 동작하는 서버에 복사해야합니다. 이 키는 파일에 추가하여 원격 서버에 연결하는 사용자의 키가 들어가도록 합니다. 그 다음 서버 접근 과정을 통해 기반 사용자의 신원을 확인하고 나면, 원격 서버에 접속할 때 공개 키를 자동으로 로그인하는 수단으로 사용할 수 있습니다:

마지막 줄 출력 내용에 파일의 내용이 나타나야 합니다. 출력 내용이 올바른지 확인하십시오.

설정 시험
이론적으로 조건을 잘 갖추었고 서버의 데몬이 키 접속을 (설정한 대로) 허용한다면, 에서 서버에 별도의 암호를 입력하지 않아도 접속할 수 있어야합니다. 클라이언트의 개인키는 이전에 사용한 암호로 해독해야겠지만, 서버의 사용자 계정 암호와 혼동하면 안됩니다.

의 암호를 물어보고 에게 서버의  사용자 접속을 서용합니다. 만약 허용하지 않았다면  사용자로 로그인하고  내용의 각 한 줄 한 줄마다 올바른 항목(공용 키)을 지니고 있는지 검증합니다. 가능하다면 공용키 인증을 허용했는지 sshd 설정을 확인하는 것이 좋습니다.

여기서, 독자 여러분은 아마 이렇게 생각하실텐데요. "단지 암호를 바꿨을 뿐인데 뭔가 문제지?!". 잠시 후에, 다음 장에서 이 암호를 한번만 입력하고 다중 로그인 과정에서 (복호화) 키를 다시 사용할 수 있는지 확실하게 보여드리겠습니다.

ssh-agent로 키 관리하기
다음은 개인키를 한번 복호화 하고 ssh에 암호 없이 접속할 수 있도록 하는 과정입니다. 프로그램이 하는 역할은 정확히 다음과 같습니다.

ssh-agent is usually started at the beginning of the X session, or from a shell startup script like. It works by creating a unix-socket, and registering the appropriate environment variables so that all subsequent applications can take advantage of its services by connecting to that socket. Clearly, it only makes sense to start it in the parent process of an X session to use the set of decrypted private keys in all subsequent X applications.

When running ssh-agent, it should output the PID of the running ssh-agent, and also set a few environment variables, namely  and. It should also automatically add to it's collection and ask the user for the corresponding passphrase. If other private keys exist which need to be added to the running ssh-agent, use the ssh-add command:

이제 마술을 부릴 차례입니다. 복호화 한 개인 키를 준비하고, 암호를 입력하지 마시고 ssh로 (공개 키를 설정 한) 서버에 접속하십시오:

ssh-agent를 그만두(고 나중에 암호를 다시 요구하게 하)려면:

To get even more convenience from ssh-agent, proceed to the next section on using keychain. Be sure to kill the running ssh-agent as keychain will handle the ssh-agent sessions itself.

ssh-agent 이외의 영역에서 간편함의 정수를 뽑아내기
Keychain will allow to reuse an ssh-agent between logins, and optionally prompt for passphrases each time the user logs in. Let's emerge it first:

Assuming that was successful, keychain can now be used. Add the following to the file to enable it:

Now test it. First make sure the ssh-agent processes from the previous section are killed, then start up a new shell, usually by just logging in, or spawning a new terminal. It should prompt for the password for each key specified on the command line. All shells opened after that point should reuse the ssh-agent, allowing to use passwordless ssh connections over and over.

Using keychain with KDE
KDE users, instead of using, can let KDE manage ssh-agent for them. In order to do so, edit, which is read during KDE's startup, and , which is executed during KDE's shutdown. Here is how one could edit those files:

Now, all that has to be done is launch a terminal of choice, like Konsole, and load the right set of keys to use. For example:

The keys will be remembered until the end of the KDE session (or until the ssh-agent process is killed manually).

보안 고려사항
Of course, the use of ssh-agent may add a bit of insecurity to the system. If another user would gain access to a running shell, he could login to all of the servers without passwords. As a result, it is a risk to the servers, and users should be sure to consult the local security policy (if any). Be sure to take the appropriate measures to ensure the security of all sessions.

문제 해결
대부분 제대로 동작해야겠지만, 문제가 일어났다면 다음 항목의 충고를 참고해보시는게 좋을 것 같습니다.


 * 없이 연결이 안되는 것 같다면, 어떤 문제가 있는지  옵션으로 ssh를 사용해보고 문제를 찾아보십시오. 공용키 인증을 사용하지 않도록 서버를 설정하지 않았을 수도 있고 로컬 암호 조차도 물어보지 않도록 설정했을 수도 있습니다! 이런 경우  명령에   옵션을 붙여보시든지 서버의  설정 파일 내용을 바꿔보십시오.
 * 또는 이 동작하지 않는 것 같다면, 현재 사용하는 쉘에서 사용하는 명령을 이해하지 못할 수도 있습니다. ssh-agent와 키 모음에 대한 맨 페이지를 자세히 살펴보셔서 다른 쉘에서 동작하게 하는 방법을 알아보십시오.

외부 자료

 * 공식 프로젝트 페이지
 * IBM developerWorks 글 모음에서 키 모음의 개념을 소개합니다