2014-07-14 1 views
1

퍼티가 퍼티를 수행 할 수 있으며, 방법을 모르겠습니다. SSH.NET 또는 다른 .NET 라이브러리를 사용하여 동일한 작업을 수행하고 싶습니다.SSH.NET이 도메인 자격증 명으로 연결

어쨌든 - 도메인 계정으로 내 Windows 시스템에 로그인 할 때 퍼티와 SSH를 실행할 수 있으며 컴퓨터에서 내 사용자 이름, 결코 내 암호 - 아직 퍼티 나를 로그인 할 수있을 것 같습니다; 아마도 도메인 인증의 일부 형태를 사용하고있을 것입니다.

SSH.NET이 할 수있는 모든 .NET 라이브러리가 가능합니까? 내가 프로세스를 시작하는 Windows에서 사용자가 가장을 사용하여, 그 프로세스에서 SSH를 대신하여 컴퓨터에 해당 사용자를 요청하거나 사용자의 비밀 번호를 처리하지 않으려는 분명한 보안상의 이유로.

+1

PuTTY 프로필 또는 바탕 화면 바로 가기가 개인 키를 사용하지 않고 SSH에서 지원하는 공개/개인 키 메서드를 사용하여 인증하지 않았습니까? 개인 키에 암호가 없으면 동일한 동작을 보입니다. – Joshua

+0

저는 SSPI를 사용하여 Kerberos를 사용하여이 작업을 수행 할 수있었습니다. 다만이 작업을 수행하는 라이브러리를 찾았습니다. (http : //www.rebex.net/ssh-pack/default.aspx) – Matt

+0

매트 - SSPI를 사용하여 달성 한 방법의 예를 제공 할 수 있습니까? 현재 SSH.NET을 사용 중이며 도메인의 Windows 자격 증명을 사용하여 사용자를 인증하려고합니다. – Tillman32

답변

1

이러한 종류의 인증은 일반적으로 NTLM/Kerberos와 같은 다양한 보안 서비스 공급자를 래핑하는 Windows SSPI API를 사용하여 수행됩니다.

SSPI 호출자는 현재 사용자의 자격 증명에 대한 핸들을 가져올 수 있으며이 자격 증명 핸들을 사용하여 SSP에 인증 토큰을 제공하도록 요청할 수 있습니다. 클라이언트는 토큰을 서버로 보내고 서버는이를 받아 들여 클라이언트에게 토큰을 보내고 양면이 행복해질 때까지 헹굼을 반복합니다.

응용 프로그램 개발자는 이러한 토큰을 요청하고 연결을 통해 페리를 만들고 적절한 SSPI 호출로 펌핑해야합니다. 그래서 일반적

:

  1. 클라이언트 AcquireCredentialsHandle()를 호출
  2. 클라이언트 InitializeSecurityContext에()를 호출하여, 출력 토큰 (불투명 바이트 배열) 복귀 입력 된 토큰을 제공하지 않는다.
  3. 클라이언트는 해당 토큰을 서버로 보냅니다.
  4. 서버는 AcceptSecurityContext()를 호출하여 클라이언트 토큰을 입력으로 제공하고 출력 토큰을 반환합니다.
  5. 서버가 그의 토큰을 클라이언트로 보냅니다.

.. 두 기능이 모두 만족할 때까지 반복됩니다. 나는 몇 가지 데모 프로그램과 함께, SSPI위한 완벽한 닷넷 래퍼가, 다행히 Client-server authentication - using SSPI?

: NSspi

내가 직접이 작업을 수행하는 방법을 배울 수있는 다음과 같은 질문을 기록했다.

이제는 이것이 SSH 프로토콜 또는 사용중인 SSH 서버에 어떻게 통합되는지 정확히 알 수 없습니다. 내 이해에서 SSH 세션은 각 측면에서 지원되는 인증 메커니즘을 광고하여 시작합니다. SSPI 또는 kerberos에 직접 연결되어있는 특정 인증 공급자를 서버가 광고하고있는 것으로 추측합니다. 클라이언트 측에서 위의 SSPI 인증주기. 이 트릭은 서버가 기대하는 바를 정확히 파악하고, 기대에 부합하는 SSH 클라이언트 라이브러리를 공급자에게 등록하는 방법입니다.

관련 문제