Keychain/ko

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

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

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

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

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

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

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

is a wrapper script for these steps. If this wrapper script is unavailable, then the following steps can be used:

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

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

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

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

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

는 보통 X 세션을 시작할 때 시작하거나 과 같은 쉘 시작 스크립트에서 동작합니다. 유닉스 소켓을 만들어 동작하고, 적당한 환경 변수를 등록하여 소켓으로 연결할 때 서비스상 프로그램이 순차적으로 동작하도록 합니다. 분명히 말씀드리자면, 순차상으로 나열한 모든 X 프로그램이 복호화된 개인 키 모음을 활용하여 X 세션의 상위 프로세스에서만 이런 일이 일어납니다.

를 실행할 때 ssh-agent의 PID를 출력해야 하며, SSH_AUTH_SOCK 와 SSH_AGENT_PID 환경 변수를 설정해주어야 합니다. 또한 자체 모음에 자동으로 를 추가하고, 사용자에게 관련 암호를 물어봅니다. 다른 개인 키가 있어 ssh-agent에 추가해야 한다면 명령을 사용하십시오:

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

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

ssh-agent에서 더 많은 편의성을 취하려 한다면, 다음 장에서 키 모음 활용 절차를 진행하십시오. ssh-agent를 키 모음과 함께 실행하고 세션 자체에서 강제 종료를 하는지 확인하십시오.

ssh-agent 이외의 영역에서 간편함의 정수를 뽑아내기
키 모음은 로그인을 할 때마다 ssh-agent를 재사용할 수 있게 하며, 사용자의 선택에 따라 사용자가 로그인할 때마다 암호를 물어보기도합니다. 우선 이머지 해보도록 하겠습니다:

성공했다면, 이제 을 사용할 수 있습니다. 활성화하려면 다음 파일처럼 추가하십시오:

이제 시험해보십시오. 우선 앞 장에서 실행한 ssh-agent를 강제로 끝냈는지 확인하시고, 로그인만 해서 새 쉘을 시작하거나 새 터미널을 여십시오. 명령줄마다 지정한 각각의 키에 대한 암호를 물어봐야 합니다. 모든 쉘은 이 시점 이후로 열릴 때마다 ssh-agent를 재사용하는데, ssh 연결을 처리할 때마다 암호 없이 연결할 수 있게 합니다.

KDE에서 키 모음 활용하기
KDE 사용자는 파일을 사용하는 대신 KDE 자체에서 ssh-agent를 관리하게 할 수 있습니다. 이렇게 하려면, KDE를 시작할 때 를, KDE를 끝낼 때 를 실행하도록 합니다. 이 파일을 다음처럼 편집하시면 됩니다:

이제, Konsole과 같이 여러분이 선택하고자 하는 터미널을 실행하고 올바른 키 모음을 불러오기만 하면 됩니다. 예를 들면:

해당 키는 KDE 세션이 끝나기 전까지 기억해둡니다(또는 ssh-agent 프로세스를 직접 강제로 끝내기 전까지 유효합니다).

Alternatively use KWallet with kde-plasma/ksshaskpass under Plasma 5
You can also have Plasma automatically ask you for your passphrase upon desktop login. Emerge kde-plasma/ksshaskpass, which will set up an environment variable to use the ksshaskpass application whenever ssh-add is run outside of a terminal. Then create a script as follows, and install it via the Plasma -> System Settings -> Startup and Shutdown -> Autostart.

플라즈마 5에서 키 모음 활용하기
예외적으로 위의 KDE 4처럼 를 로 바꾸십시오.

보안 고려사항
물론 를 활용하면 시스템에 약간의 불안감을 심어줄 수도 있습니다. 다른 사용자가 동작 중인 쉘에 접근한다 치면, 접근한 당사자는 암호 없이 모든 서버에 로그인할 수 있습니다. 결과적으로 서버에 치명적이며, 사용자는 로컬 보안 정책(이 있다면)을 다시금 고려해야합니다. 모든 세션에 대한 보안을 처리할 때 적절한 기준을 취하십시오.

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


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

외부 자료

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