2014-01-24 2 views
2

other 문제를 해결할 때 어떤 이유로 기본 개인 키가 사용되지 않고 있다고 추측했습니다.ssh 세션 내에서 ssh가 올바른 ssh 개인 키를 사용하지 않음

서버에서

, C : \ 사용자 \ Administrator.ssh \ 설정가 포함

Host bitbucket.org 
IdentityFile ~/.ssh/id_rsa.ppk 

나는에 로그인 한 상태에서 SSH 키를 관리하기 위해 가용 스루풋 사용하고 자식 명령을 실행하면 때 잘 작동합니다. 실제로 컴퓨터에 관리자로 로그인했습니다. 또 다른 예 : plink -T [email protected]이 작동합니다.

그러나 PuTTY를 통해 서버에 로그인하면 git 명령 실행이 실패하고 plink -T [email protected]도 실행됩니다. 그러나 plink : plink -T -i C:\Users\Administrator\id_rsa.ppk [email protected]으로 개인 키를 지정하면 작동합니다.

PuTTY에 로그인 할 때 % userprofile %는 정확합니다. 노트북의 사용자 이름과 암호는 정확히 동일합니다. ssh가 설정에서 지정한 ppk 파일을 사용하지 못하게하는 원인은 무엇입니까? 로컬로 로그인 할 때와 PuTTY를 통해 로그인 할 때 내 GIT_SSH 세션 변수도 plink.exe로 설정됩니다. 좌절감을 추가하는 것은 git 명령을 실행할 때 ppk 파일을 지정할 수 없다는 것입니다.

업데이트 : 아래의 댓글 답글에 명시된 바와 같이, 주요 문제는 연결하려는 서버에 키를 보내는 데 pageant.exe가 사용되지 않는 것으로 보입니다. 로컬에 로그인했을 때 미인은 PuTTY를 통해 로그인했을 때가 아니라 정상적으로 시작됩니다. 퍼티 (PuTTY)에서 '사용자 에이전트 전달 (user agent forwarding)'을 읽었지만 도움이되지 못했습니다. 어쩌면 무료 SSH가 지원하지 않을 수 있습니까? 그렇게했다면 차이가 있겠습니까?

업데이트 2 : Yeeeeaaaahhh ... 점점 가까워지고 있습니다. VNC 뷰어에 로그인 한 상태에서 '미인'을 입력했는데 '미인은 이미 실행 중'이라고합니다. 그래서 나는 대체 무슨 말을했는지 PuTTY 콘솔에 입력했습니다 ... 아무 일도 없었습니다. 그래서 나는 그것이 달리지 않고있는 것이라고 상상했다. 그래서 나는 plink -T -v [email protected]를 실행했고 loand-behold 미사가 수행되었지만 SSH 키가 설치되어 있지 않다고 말했다. 이것이 핵심 이슈입니다. pageant는 사용자 세션 기반 응용 프로그램이며 SSH 사용자 관리자가 로컬 관리자와 같지 않아 어떤 키도 제공하지 않는다고 생각합니다. 또한 PuTTY 연결을 닫고 여분의 미화 프로세스가 여전히 실행 중임을 알았습니다. 나쁜 소식 # 1. 나쁜 소식 # 2는 내가 PuTTY 내에서 시작할 수있는 미적 프로세스의 수에 제한이 없다는 것입니다. 무엇을해야합니까?

최종 : 문제가 해결되었습니다. 답변의 마지막 편집을 참조하십시오.

답변

1

내 "해결책"은 다음과 같습니다.

1) 개인 키 파일에서 암호문을 제거하십시오. 미화는 명령 줄 인수로 암호를 입력 할 수 없으므로 퍼티에 비해 사용할 수 없습니다. 이런,하지만 내가 뭘 할 수 있을까?

2) FreeSSHd 앱에서 Command Shell 상자에 C:\WINDOWS\system32\cmd.exe /K "pageant C:\Users\Administrator\.ssh\id_rsa.ppk"을 입력하면 ssh 사용자가 미팅을 실행하게하여 미팅 담당자가 키를 요청할 때 인식합니다. 이것은 백그라운드에서 다른 멋쟁이 exe 프로세스가 실행되고 ssh 연결을 닫을 때 닫히지 않지만 한밤중에 할 수있는 일은 너무 많습니다. 어떻게 든 PID가 생성되고 프로세스의 PID를 얻을 수 있다면 여하튼 닫히는 스크립트를 실행하면 멋질 것입니다.

3) 이제 작동합니다.

부록 : freeSSHd 서비스는 로컬 사용자 계정으로 실행할 수 없으며 SYSTEM 계정이어야합니다. 그렇지 않으면 성공적인 연결을 즉시 닫습니다. 왜? 몰라. 나는 이것이 가장 큰 장애물이라고 생각합니다 ... 아마도 ssh 사용자는 본질적으로 시스템 계정으로 실행되므로 "Administrators"에서 실행중인 이미 실행중인 미성년자 프로세스에 액세스 할 수 없습니다.

더 나은 답변 업데이트 : 나는 freeSSHd를 없애고 openssh로 Cygwin을 설치했습니다. 모든 sshd 설정 옵션에서 "예"를 선택하고 특정 옵션에 대해 "아니오"라고 말하는 온라인 자습서를 듣지 마십시오. SYSTEM 계정으로 sshd를 실행하지 마십시오. 새 사용자 계정을 만들어서 사용하십시오. 가장 큰 이점은 PuTTY를 통해 '미인 대회'를 개최 할 때 두 번 이상의 프로세스를 생성하지 않기 때문에 몇 번이나 할 수 있다는 것입니다. 하나는 이미 실행중인 실제 로컬 관리자 계정이고 다른 하나는 기발한 "SSH 관리자"계정 (관리자라고 함) 용 계정입니다. 다른 컴퓨터에서 로그인 할 때에도 더 이상 프로세스가 생성되지 않습니다. 문제 해결됨.

+0

+1 내 대답보다 자세한. 나는 적절한 환경 변수를 설정하기위한 wrapper를 만들기 위해 wrapper를 만들고, 실행중인 모든 사용자를 위해'% HOME %'와 같은 환경 변수에 대한 특정 경로를 시행하기 위해 실제 plink를 호출하려고한다. 저 래퍼. 그러나 당신의 방법이 작동한다면, +1. – VonC

1

특히 PuTTY를 통해 로그온 할 때 항상 C:\Users\Administrator (또는 %USERPROFILE%)을 참조하는 HOME 환경 변수가 정의되어 있는지 확인하십시오.

이렇게하면 ssh가 ssh 구성 파일을 찾을 수 있습니다.

또한 ssh 키를 생성 할 때와 git에서 ssh를 사용할 때 동일한 ssh 구현을 사용해야합니다. "Git with SSH on Windows"을 참조하십시오.
개인 키가 암호로 보호 된 경우 "Why git can't remember my passphrase under Windows"을 참조하십시오.

+0

모든 환경 변수가 올바른 위치를 가리키고 있는지 확인한 후에도 여전히 문제가 발생합니다. VNC 뷰어를 사용하여 로그인하여 조금씩 비교해 보았으므로 명령 프롬프트에서 차이점을 확인할 수 있습니다. "plink -T -v [email protected]"를 실행하면 로컬 cmd 프롬프트가 pageant.exe를 호출하여 키를 제공하지만 PuTTY 인터페이스가 해당 호출을 전혀 표시하지 않는 것을 볼 수 있습니다. SSH 사용자로 로그인 할 때 미인이 활성화되지 않는 것 같습니다. 이 문제를 어떻게 해결할 수 있습니까? – JakeTheSnake

0

그것이 예상하고 어떤 위치에 키를 찾을 수없는 경우, 당신은 또한 같은 -v, -i 매개 변수를 추가 할 수 있습니다

plink -v -ssh -2 -i /whatever/location/id_rsa -l git gitserver.acme.com 

우선을 -v (세부 정보 표시)이 문제를 정확하게 파악하는 데 도움이됩니다. 그런 다음 -i 매개 변수를 사용하여 키가 발견되고 유효한지 확인할 수 있습니다.

그런 다음 %userprofile%으로 이동하십시오.

또한 디렉토리가 c : \ Users \ Administrator.ssh 여야한다고 생각합니다. 아마도 백 슬래시를 추가하는 것을 잊어 버린 오타를했을 것입니다.

관련 문제