컴퓨터 일반

[Windows] Git bash에서 PuTTY의 Pageant를 사용하지 않을 때

Folivora 2020. 4. 3. 18:27

PuTTY의 Pageant

 

Pageant는 PuTTY에서 제공하는 SSH 키를 "메모리"에 보관하는 역할을 한다. 이렇게 해두면 매번 키 암호를 타이핑하지 않아도 된다. OpenSSH에서는 ssh-agent가 같은 역할을 한다.

 

문제 상황

어느 순간부터 윈도우의 Git Bash에서 PuTTY의 Pageant를 사용하지 않게 되었다. 대신에 OpenSSH를 사용하는데, 상당히 불편했다. 리눅스에서는 OpenSSH가 더 편리하지만 윈도우에서는 PuTTY를 사용하고 있고, 키 형식 역시 PuTTY 전용이었기 때문이다. 물론 PuTTY 키를 OpenSSH 형식으로 변환하는 것은 가능하다.

 

일단 임시로 이렇게 키 (id_rsa) 를 만들어서 사용했지만, ssh-agent를 background에서 실행해야 했고, 리눅스가 아닌 윈도우에서 OpenSSH를 사용하고 싶지는 않았다. 

 

문제 해결

윈도우의 환경 변수(Environment Variables)에서 GIT_SSH_VARIANTssh로 설정이 되어 있었다.

 

 

이 항목을 지운 뒤, GIT_SSH 항목을 추가하고 plink.exe 의 경로를 입력한다.

본인의 컴퓨터에서는 C:\Program Files\PuTTY\plink.exe 이다.

 

 

이렇게 하면 ssh.exe를 실행하는 것이 아니라 plink.exe를 통해 접속하게 된다. Pageant에 불러와진 SSH 키를 사용하게 될 것이다. GIT_SSH_VARIANT가 ssh로 설정되어 있으면, GIT_SSH가 plink.exe로 되어 있더라도 OpenSSH라고 간주하는 듯하다. GIT_SSH_VARIANT 항목이 없으면 GIT_SSH의 파일 이름을 보고 암묵적으로 종류를 판단하는 것 같다.

 

 

(추가 5/1/2022)

GitHub Desktop에서 plink.exe를 사용하여 연결하고 싶으면 'Use system OpenSSH (recommended)'를 체크해제하면 된다. 만약에 시스템 OpenSSH을 사용하려면 ssh-add 커맨드를 통해 ssh-agent에 키를 등록해야한다. 물론 plink (pageant)의 crendential manager와 별개.