2012-02-15 4 views
1

개발자 용 컴퓨터가 있고 서버에 액세스 할 수 있도록 SSH 키를 설정했습니다. .ssh의 공개 키와 개인 키는 분명히 사람에게 표시됩니다.SSH 키 보호

이러한 키를 보호 할 방법이 있습니까? 이러한 키가 다른 서버로 복사 될 가능성을 원하지 않는다면 아무 것도 할 수 있습니까?

기본적으로 ssh-agent는 로그인 한 사용자로 실행되므로 ~/.ssh 폴더에 대한 사용자 액세스 권한을 제거 할 수 없습니다.

덕분에, Tabrez

+1

아니요, 파일에 키를 저장하는 경우에는 아무 것도 없습니다. 키가 하드웨어 (스마트 카드)에 저장되는 경우 복사를 방지하는 방법이 있습니다. – Zoredache

+0

SSH는 컴퓨터 기반 접근을 제한하지 않는다. – madth3

+1

'man sshd_config'를 확인하고'HostCertificate' 및/또는'Match'를 설정하여 사용자를 특정 발신 호스트로 제한 할 수 있다고 생각합니다. – nicerobot

답변

1

당신은 개발자가 키를 사용하지만 복사 할 수 있도록하고 싶습니다.

이렇게하려면 개발자가 전체 액세스 권한이없는 서버에 키를 저장할 수 있습니다. 이를 구현하는 한 가지 방법은 다음과 같습니다.

    개발자는 키가 저장된 특수 "키 보관소"서버에 로그인합니다. 다른 SSH 키 (제어하려는 암호가 아닌), 암호, 2 중 인증 형식 또는 SSH가 지원하는 다른 옵션을 사용하여이 서버에 로그인 할 수 있습니다. (물론, 키 보관 서버에서 실행)
    • 새로운 SSH 에이전트를 시작합니다 :이 서버에
    • 개발자의 계정이 이러한 작업을 수행하여 프로세스를 계속 강제 명령 또는 제한된 쉘로 구성되어 있습니다
    • 은 해당 에이전트에 제어 된 키를로드합니다.
    • 에이전트 전달을 사용하는 다른 서버에 대한 ssh 연결을 시작합니다.
  • 개발자는이 두 번째 서버 (계정이 있어야 함)에 로그인합니다. 이 두 번째 서버는 이미 운영중인 범용 서버 일 것입니다.

개발자는 이제 키 보관소 서버에서 실행중인 에이전트를 사용하여 두 번째 서버의 다른 위치에 로그인 할 수 있지만 키에있는 파일을 검사하거나 복사 할 수있는 기회가 전혀 없습니다 관리 서버.

이 솔루션은 모든 개발자 세션이 키 보관소 서버와 두 번째 공유 서버를 통해 채널링된다는 사실로 인해 어려움을 겪습니다. 키 보관소 서버가 원격 인 경우 이는 단점 일 수 있습니다. 또한 개발자가 파일 (SCP 또는 SFTP)을 로컬 컴퓨터로 다시 전송하는 데 사용하기가 어렵고 직관적이지 않습니다.

다른 솔루션으로는 SSH 에이전트 요청을 전용 저장소를 통해 키 보관 서버의 실제 에이전트에 전달하는 스텁 SSH 에이전트 서버를 개발자 컴퓨터에 로컬로 생성하는 소프트웨어 작성이 포함됩니다. 약간의 작업을 통해 키 보관소 서버 (자체 SSH 연결)에 대한 전용 연결을 설정할 수 있으므로 개발자 컴퓨터에서 해당 환경에 스텁 ssh 에이전트 소켓이있는 간단한 서브 쉘이 자동으로 실행되므로 "그냥 사용할 수 있습니다 "이 솔루션은 실제로 매우 기능적이고 사용자 친화적 일 수 있습니다. 나는이 일을 혼자했지만 Stackoverflow 대답의 범위를 넘어서는 길이다.

+0

안녕하세요. Celada - 답변 해 주셔서 감사합니다. 나는 원격 기계와 개발자 기계의 로컬 컴퓨터로 파일 전송 메커니즘을 가지고 있지 않다. 원격 컴퓨터의 키를 보호하려면 어떻게해야합니까? (사용자가 RDP 또는 VNC를 통해 로그인하는 경우) ssh-agent는 사용자 권한으로 실행되므로 ~/.ssh에 대한 액세스 권한을 갖게됩니다. – Tabrez

+0

사용자는 쉘을 가져 오거나 키 보관자에게 임의의 프로그램을 실행할 수 없기 때문에 에이전트 나 키 파일 자체를 제어 할 수 없습니다. 사용자가 키 보관소에 로그인하면 제한된 쉘로 강제됩니다. – Celada