洪民憙 (홍민희) 블로그

Windows에서 PuTTY, SSH 사용 팁

몇년 전부터 Windows에서 내가 SSH를 사용하는 방법이 있다. 근데 주변을 보니까 다들 그냥 putty.exe 파일 하나 받아놓고 쓰는 경우가 많길래 내가 쓰는 방법을 정리해본다.

dPuTTY

먼저 나는 공식 웹사이트에서 배포되는 putty.exe 대신 아침놀 님이 각종 패치를 적용한 dPuTTY를 사용한다. 몇가지 추가적인 기능이 있는데, 내가 dPuTTY를 쓰는 이유는 주로 투명도를 설정할 수 있다는 점과 ASCII 영역 밖에 있는 유니코드 문자들에 대해서 별도의 글꼴을 설정할 수 있다는 점 때문이다. 나는 ASCII 영역 안쪽은 Consolas를, 그 밖의 문자들에 대해서는 돋움체를 쓰고 있다.

Use separated Unicode font

나는 비밀번호를 쓰지 않고 비밀키를 쓴다. 실제로 이렇게 쓰는 사람은 별로 없는 것 같지만 PuTTY는 풀 패키지를 설치하면 Pageant나 PLink, PScp 같은 다른 도구를 함께 제공한다.1 Pageant는 정해진 비밀키의 passphrase를 입력해두면 그 이후의 SSH 인증에 해당 세션(Pageant 프로세스 켜진 동안 내내)에서 PuTTY 내 유틸리티에서 일어나는 SSH 인증은 모두 그 비밀키를 통해 passphrase 입력 없이 할 수 있게 해준다. 컴퓨터 켜고 passphrase 딱 한번만 입력하면 그 뒤로는 아무것도 입력할 필요 없이 비밀키로 자동적으로 인증이 된다.

Pageant를 쓰려면 일단 비밀키가 필요하다. 정확히는 PuTTY에서 사용하는 형식인 PPK 비밀키가 필요하다. 풀 패키지 안에 PuttyGen (PuTTY Key Generator) 유틸리티가 들어있으니 이걸 쓰면 새로운 비밀키 생성도 되고, 기존에 ssh-keygen 프로그램으로 생성해준 키가 있으면 그걸 PuTTY 형식으로 변환하는 것도 할 수 있다.

PuTTY Key Generator

만들거나 변환한 비밀키 PPK 파일을 어딘가에 저장해둔다. 나 같은 경우 그냥 홈 디렉토리 바로 안쪽에 .ssh 폴더를 만들어서 그 안에 둔다. (그리고 해당 폴더는 숨김 표시 해둠.) 참고로 이 파일은 인스톨러를 통해 설치한 경우 자동으로 Pageant에 연결되어 있다. 그래서 이걸 실행하면 알아서 Pageant가 이걸 불러오고 passphrase를 묻게 된다. 이것을 이용해 컴퓨터가 켜졌을 때 알아서 Pageant가 실행되도록, 해당 PPK 파일의 바로가기(shortcut)을 만들어 Startup 안에 넣어둔다.

PPK Passphrase Prompt

일반적으로 SSH를 쓰는 경우 여기까지만 해두면 되는데, 버전 관리 시스템에서도 SSH를 통해 통신을 하는 경우 비밀키 인증을 해야 한다. 그런 경우에는 어떻게 할까? 내가 주로 사용하는 Git과 Mercurial에 대해서만 좀더 정리를 해보겠다. (Git과 Mercurial을 Windows에서 설치하는 방법은 따로 다루지 않는다.)

Git은 GIT_SSH라는 환경 변수가 설정되어 있을 경우 단순히 ssh 명령을 실행하는 대신 해당 환경 변수에 들어 있는 명령을 대신 사용한다. 단, 인자는 ssh가 받는 형식대로 넘겨주도록 되어 있기 때문에 ssh가 받는 형식의 인자를 처리할 수 있는 프로그램을 지정해야 한다. 쉽게 말해, 저기에 들어가는 명령어는 ssh의 drop-in replacement여야 한다.

PuTTY 패키지 안에 들어있는 plink.exe가 그런 용도이다. 따라서 GIT_SSH 환경 변수를 C:\Program Files\PuTTY\plink.exe와 같이 설정하면 된다(경로가 다를 경우 알아서). 참고로 Windows에서의 환경 변수 설정은 System Properties → Advanced → Environment Variables… 메뉴로 들어가서 고칠 수 있다.

이렇게 하고 나면 이후 Git에서 SSH를 사용하는 경우 Pageant를 통해 비밀키 인증을 하게 된다. SSH 통신도 PuTTY가 하게 된다.

마찬가지 역할을 하는 옵션이 Mercruial에도 있다. 이쪽은 환경변수 대신에 설정 파일의 [ui] 섹션에 있는 ssh 항목을 따른다. Windows에서는 ~/.hgrc 대신 홈 아래의 Mercurial.ini가 설정 파일이다. (나는 이것도 숨김 표시를 해두었다.) 이 파일에 ssh 항목을 다음과 같이 설정하면 된다. 마찬가지로 경로가 다를 경우엔 알아서.

[ui]
ssh = "C:\Program Files\PuTTY\plink.exe"

마지막으로 64비트 환경을 사용하는 사람들을 위한 추가 팁. PuTTY 공식 웹사이트에서 구할 수 있는 패키지는 32비트 바이너리이다. 직접 소스 코드를 받아 64비트 바이너리를 빌드하는 방법도 있지만 너무 수고스럽다. 나는 https://splunk.net/w/PuTTy64bit에서 다른 사람이 빌드해둔 패키지를 구해서 설치했다. 근데 아침놀 님께 여쭤보니 dPuTTY는 32비트 바이너리만 있다고 한다. 그래서 나는 putty.exe만 32비트 바이너리를 쓰고 있다. 음;;

@achimnol 혹시 dPuTTY 64비트 바이너리도 있나요? 어쩐지 예전에도 정확히 똑같은 질문을 했던 것 같기도 한데;;

— Hong Minhee (@hongminhee) June 5, 2012

@hongminhee 없습니다;;

— Joongi Kim (@achimnol) June 5, 2012

  1. 각각 plink.exessh의, pscp.exescp의 drop-in replacement다.