2015-01-19 4 views
1

WinSCP .NET 어셈블리를 사용하여 SFTP 기반 응용 프로그램을 작성합니다.WinSCP .NET 어셈블리 연결에서 SSH 호스트 키 받기

누락 된 것 같은 '핵심'문제는 응용 프로그램이 SSH 키를 사용하여 연결된 호스트의 유효성을 검사 할 수있는 방법이 사용자가 제공하지 않는 한 나타나지 않는다는 것입니다.

우리가 알고있는 것처럼 이것은 일반적으로 발생하는 것이 아니므로 타사 프로그램을 사용하는 사용자가 그것을 얻지 않고도 SSH 키를 계속 사용하고 싶습니다.

연결하기 전에 설정해야 하나 : 당신은 키가 후자를 할 선택의 여지가 아직 무엇인지 모르는 경우

ConnectionOption.SshHostKeyFingerprint= SSHkeyString 

또는

ConnectionOptions.GiveUpSecurityAndAcceptAnySshHostKey = True 

을하고, 연결이 이루어진 후에 이것을 호출하여 SSH 호스트 키의 속성을 얻을 수 있다고 가정합니다.

MessageBox.Show(ConnectionOption.SshHostKeyFingerprint) 

하지만 그 결과는 비어 있습니다.

.NET 커넥터에 대한 설명서를 검토 했으므로 연결된 서버의 SSH 키를 검색 할 수있는 방법이없는 것 같습니다.

이 기능이있는 것으로 보이는 라이브러리가 있지만 실제로 발견 된 라이브러리는 상업적으로 사용 허가되었습니다. 그 능력을 가진 일반 SSH 커넥터조차도 (FTP가 아님) SSH 키를 얻는 것만으로도 가능할 것이라고 생각합니다.

내 질문은
WinSCP .NET 어셈블리를 사용하여 연결된 서버에서 알 수없는 SSH 키를 검색하는 방법은 무엇입니까?

SSH 키를 검색 할 수있는 다른 라이브러리가 있습니까?

+0

사용자가 키를 알고 있는지 어떻게 알 수 있습니까? –

+0

[winSCP FAQ] (http://winscp.net/eng/docs/faq_script_hostkey)에서 설명한 것처럼 사용자는 처음 연결할 때까지 키를 얻을 수없는 경우가 종종 있습니다. 저는 이것이 가장 안전하지는 않지만 사용자가 그것을 모르기 때문에 호스트 키에 대한 검사를 완전히 비활성화하는 것이 아니라는 것을 이해합니다. 사용자는 향후 연결에서 변경되면 적어도 통지받을 수 있습니다. – TheOddPerson

답변

2

WinSCP 5.8.x부터 Session.ScanFingerprint method을 사용하여 대화 형 호스트 키 확인을 구현할 수 있습니다.

Implementing SSH host key cache (known hosts)에 대한 C# 및 PowerShell 예제가 있습니다.
VB.NET을 사용하여 다시 구현하는 것이 어렵지 않습니다.

+0

좋아, 그래서 내가 특별히 찾고있는이 기능이 WinSCP에 없기 때문에 SSH 키를 획득하는 데 사용할 수있는 다른 라이브러리가 있습니까? 내 응용 프로그램은 대화식으로 sFTP를 사용하지 않고 전송되는 항목 만 설정합니다. 또한 속성 이름을 수정 해 주셔서 감사 드리며 질문을 업데이트했습니다. – TheOddPerson

+0

@TheOddPerson WinSCP가 이제 이것을 지원합니다. 내 업데이트 답변을 참조하십시오. –

+0

고맙습니다. 이것은 가장 도움이됩니다. 나는 당신에게 또 다른 upvote 줄 수 있으면 좋겠 :) – TheOddPerson