TortoiseSVN Logo

SSH HowTo

(개정 0.5 작성자: (c) Marc Logemann)

많은 새로운 서브버전 사용자들이 SSH와 함께 서브버전을 사용하려 할 때 문제에 직면하기 때문에, 그 문제에 대한 HowTo를 작성했습니다. 아마도 이 HowTo를 나중에 확장하여 서브버전 또는 TortoiseSVN 문서에 제출할 것입니다.

-------------------------
우리의 시나리오
-------------------------
서버: Linux 또는 Unix 계열 시스템
클라이언트: Windows 2000/XP (또는 변형)

-----------------------------------------
서브버전 설치 (서버)
-----------------------------------------
이 주제는 공식 서브버전 문서에서 상세히 다루므로 여기서는 자세히 설명하지 않겠습니다. 하지만 한 가지는 그럼에도 불구하고 지적하고 싶습니다. 소스에서 서브버전을 컴파일하고 ./configure에 인수를 제공하지 않으면, 서브버전은 /usr/local 아래에 "bin" 디렉토리를 생성하고 거기에 바이너리를 배치합니다. 서브버전을 데몬으로 실행하는 한 문제가 없지만, SSH를 사용하여 터널링 모드를 사용하려면 SSH를 통해 로그인하는 사용자가 svnserve 프로그램과 다른 바이너리를 실행할 수 있어야 한다는 점을 알아야 합니다. 이러한 이유로, /usr/local/bin을 PATH 변수에 추가하거나 바이너리의 심볼릭 링크를 /usr/sbin 디렉토리 또는 일반적으로 PATH에 있는 다른 디렉토리에 생성하십시오.

모든 것이 정상인지 확인하려면. 나중에 SSH와 대상 사용자로 시스템에 로그인하여 "which svnserve"를 입력하십시오. 이 명령은 svnserve에 도달할 수 있는지 알려줄 것입니다.
svnserve가 ssh를 통해 사용 가능한지 확인하려면 "ssh svnserve"를 입력하십시오.

또한 이 문서는 "svnadmin create"로 서브버전 저장소를 이미 생성했다고 가정합니다. 가능한 문제를 줄이기 위해 저장소의 ACL에 주의하십시오. SSH를 통해 들어오는 각 사용자가 저장소 작업을 위한 적절한 권한을 가지고 있는지 확인하십시오.

때때로 시스템의 전역 bashrc 파일에 'mesg y'가 포함되어 있을 수 있습니다. 이 줄은 SSH가 "stdin: is not a tty" 오류를 발생시켜 TortoisePlink 연결을 실패하게 만듭니다. bashrc 파일에서 해당 줄을 제거해야 합니다.
------------------------------------------------
OpenSSH 및 인증서 (서버)
------------------------------------------------
다시 말하지만, OpenSSH 설치에 대해서는 다른 곳에서 더 잘 다루므로 자세히 설명하지 않겠습니다. 하지만 대부분의 시스템에서는 SSH 활성화가 RPM 설치만큼 간단합니다. 호스팅 회사에서 사전 설치된 Linux 서버를 임대하는 경우, SSH는 이미 설치되어 있을 가능성이 높습니다. 모든 것이 제대로 설치되었는지 확인하려면 "ps xa | grep sshd"를 입력하고 SSH 작업을 확인하십시오.

OpenSSH가 설치되었다고 가정하면, 가장 중요한 단계 중 하나는 인증을 위한 키페어를 생성하는 것입니다. 키를 생성하는 두 가지 가능한 방법이 있습니다. 첫 번째 방법은 Puttygen (Putty 계열 프로그램)으로 키를 생성하고 공개 키를 서버에 업로드한 다음 Putty로 개인 키를 사용하는 것입니다. 이 접근 방식에 일부 문제가 있어 저는 다른 방법을 선호합니다. 이 방법은 OpenSSH 도구인 ssh-keygen으로 키페어를 생성하고, 개인 키를 클라이언트에 다운로드하며, 개인 키를 Putty 스타일 개인 키로 변환합니다.

단계별로 진행해 봅시다

- 서버에 로그인
- 입력: ssh-keygen -b 1024 -t dsa -N passphrase -f mykey
- "passphrase"를 본인만 아는 비밀 키워드로 변경
- 입력: ls -l mykey*

우리는 1024비트 키프레이즈를 가진 SSH2 DSA 키를 방금 생성했습니다. 두 개의 파일이 보일 것입니다. 하나는 "mykey"이고 다른 하나는 "mykey.pub"입니다. 짐작하시겠지만, .pub 파일은 공개 키 파일이고, 다른 하나는 개인 키 파일입니다. 다음으로 홈 디렉토리를 가진 서버에 사용자를 생성합니다.

- 입력: useradd -m myuser

/home 아래에 "myuser"라는 이름의 디렉토리가 생길 것입니다. "myuser" 안에 ".ssh"라는 새 디렉토리를 만드십시오.

- 입력: cd /home/myuser
- 입력: mkdir .ssh

그런 다음 키를 생성한 디렉토리로 이동하여 다음 명령으로 공개 키를 .ssh 사용자 폴더에 복사하십시오.

- 입력: cp mykey.pub /home/myuser/.ssh/authorized_keys

또는 이미 키가 있는 경우

- 입력: cat mykey.pub >> /home/myuser/.ssh/authorized_keys

파일 이름에 주의하십시오. 반드시 "authorized_keys"여야 합니다. 일부 오래된 OpenSSH 구현에서는 "authorized_keys2"였습니다. 이제 개인 키 파일을 클라이언트 컴퓨터로 다운로드하십시오. 파일 이름은 "mykey"였습니다.

------------------------------------------------------------
SSH 키 생성 및 연결 확인 (클라이언트)
------------------------------------------------------------
이 사이트에서 Windows에서 SSH를 수행하는 데 필요한 도구를 가져오십시오.
https://www.chiark.greenend.org.uk/~sgtatham/putty/

다운로드 섹션으로 이동하여 "Putty", "Plink", "Pageant" 및 "Puttygen"을 다운로드하십시오.

서버에서 받은 개인 키를 사용하려면 Putty 형식으로 변환해야 합니다. 이는 개인 키 파일 형식이 어떤 표준 기관에 의해 지정되지 않았기 때문입니다. 이렇게 하려면 "puttygen"을 열고 "conversions" 메뉴를 연 다음 "Import Key"를 선택합니다. 그런 다음 서버에서 가져온 "mykey" 파일을 찾아 키 생성 시 제공한 암호를 입력합니다. 마지막으로 "Save private key"를 클릭하고 파일을 디스크의 아무 곳에나 "mykey.PPK"로 저장합니다.

이제 이 키를 처음으로 사용하여 연결을 테스트할 준비가 되었습니다. 이렇게 하려면 "putty" 프로그램을 열고 다음과 같이 새 세션을 생성합니다.

세션->호스트 이름: 서버의 호스트 이름 또는 IP 주소
세션->프로토콜: SSH
세션->저장된 세션: MyConnection
SSH->선호하는 SSH 프로토콜 버전: 2
SSH->인증->인증을 위한 개인 키 파일: $PATH$\mykey.PKK ($PATH$를 mykey.PKK 파일의 실제 경로로 대체)

그런 다음 세션 탭으로 돌아가 "저장" 버튼을 누릅니다. 사용 가능한 연결 목록에 "MyConnection"이 표시될 것입니다.

다음으로 "열기"를 클릭하면 텔넷 로그인 프롬프트가 나타나야 합니다. 사용자 이름으로 "myuser"를 사용하고(물론 따옴표 없이) 모든 것이 정상이라면 시스템에 암호를 제공할 필요가 없습니다. 시스템이 여전히 암호를 요구한다면, 뭔가 잘못된 것입니다. 이 HowTo의 디버깅 섹션을 참조하십시오.

-----------------------------------------------
TortoiseSVN으로 SSH 테스트 (클라이언트)
-----------------------------------------------
TortoiseSVN 설치 후 Windows 탐색기 내부의 폴더를 마우스 오른쪽 버튼으로 클릭합니다. TortoiseSVN->RepoBrowser라는 메뉴 항목이 보일 것입니다. 브라우저를 연 후 다음과 같은 URL을 입력해야 합니다.

svn+ssh://myuser@MyConnection/usr/local/repos

URL에 대해 간략히 이야기해 봅시다 (더 많은 정보가 필요하면 서브버전 문서를 확인하십시오). 스키마 이름은 "svn+ssh"이며, 이는 Tortoise에게 서버 요청을 처리하는 방법을 알려줍니다. 이중 슬래시 다음에는 서버에 연결하려는 사용자를 제공할 수 있습니다. 우리의 경우 "myuser"입니다. "@" 다음에는 Putty 세션 이름을 제공합니다. 이 세션 이름에는 개인 키와 서버 IP 또는 DNS를 찾는 방법과 같은 모든 세부 정보가 포함됩니다. 마지막으로 저장소의 전체 경로를 제공해야 합니다. 서브버전 저장소가 /usr/local/repos에 있다고 가정합니다.

URL을 제출하면 다음 화면에서 "repos" 노드까지 열린 트리가 보일 것입니다. 아직 연결이 이루어지지 않았습니다. 이는 트리 표현이 제공된 URL에서 오기 때문입니다. "repos" 앞의 "+" 버튼을 누르면 연결이 설정되고, 저장소에 아무것도 없으면 "+" 기호가 사라지거나 이미 가져온 프로젝트와 파일이 보일 것입니다.

지금쯤이면 TortoiseSVN과 함께 SSH 터널이 실행되고 있을 것입니다.

-----------------------------------------------
구성 변형 (Pageant)
-----------------------------------------------
이제 일상 작업에 도움이 될 수 있는 몇 가지 구성 변형을 보여 드리겠습니다.

TortoiseSVN에서 URL을 단순화하는 한 가지 방법은 Putty 세션 내에 사용자를 설정하는 것입니다. 이를 위해 Putty에서 이미 정의된 세션 "MyConnection"을 로드하고 다음 항목을 만드십시오.

연결->자동 로그인 사용자 이름: myuser

그런 다음 이전과 같이 Putty 세션을 저장하고 Tortoise 내에서 다음 URL을 시도하십시오.
svn+ssh://MyConnection/usr/local/repos

이번에는 Putty 세션 "MyConnection"만 TortoiseSVN이 사용하는 SSH 클라이언트(TortoisePlink.exe)에 제공합니다. 이 클라이언트는 로그인 사용자 또는 서버 IP와 같은 모든 필요한 세부 정보를 세션에서 확인할 수 있습니다.

어떤 사람들은 모든 키를 저장하기 위해 Pageant를 사용하는 것을 좋아하며, 실제로 모든 HowTo는 거기에 키를 배치하는 것이 중요하다고 설명합니다. 사실, Putty 세션이 키를 저장할 수 있기 때문에 일반적인 작업에는 Pageant가 필요하지 않습니다. 그러나 여러 사용자를 위한 키를 저장하고 싶다고 상상해 보십시오. 이 경우, 연결하려는 사용자에 따라 Putty 세션을 계속해서 편집해야 할 것입니다. 이러한 상황에서는 Pageant가 완벽하게 합리적입니다. Putty, Plink, TortoisePlink 또는 다른 Putty 기반 도구가 SSH 서버에 연결을 시도할 때, Pageant가 가지고 있는 모든 개인 키를 확인하여 연결을 시작하기 때문입니다.

이 작업을 위해 Pageant를 시작하고 키를 추가하기만 하면 됩니다. 위에서 Putty 세션에 정의한 것과 동일한 개인 키여야 합니다. 개인 키 저장에 Pageant를 사용하는 경우 Putty 세션 내부의 "SSH->Auth->Private Key file for auth" 섹션을 삭제할 수 있습니다. 물론 다른 시스템 또는 다른 사용자를 위한 키를 더 추가할 수 있습니다. 클라이언트를 재부팅할 때마다 이 절차를 반복하고 싶지 않다면, Windows 설치의 자동 시작 그룹에 Pageant를 배치해야 합니다. Pageant.exe에 명령줄 인수로 전체 경로를 가진 키를 추가할 수 있습니다.

SSH 서버에 연결하는 마지막 방법은 TortoiseSVN 내에서 이 URL을 사용하는 것입니다.

svn+ssh://[email protected]/usr/local/repos

보시다시피, 저장된 Putty 세션 대신 IP 주소를 연결 대상으로 사용합니다. 사용자도 제공하지만, 개인 키 파일이 어떻게 찾아지는지 궁금할 수 있습니다. TortoisePlink.exe (TortoiseSVN의 표준 SSH 클라이언트)는 Putty 스위트의 plink 도구의 수정된 버전이므로, TortoiseSVN도 실행 중인 Pageant를 찾아 Pageant에 저장된 모든 키를 시도할 것입니다.

----------------------------------------
피드백
-------------------
이 HowTo에 대한 의견이나 수정 사항은 TortoiseSVN 메일링 리스트를 사용하십시오.

이것은 http://www.logemann.org/day/archives/000099.html에 있던 원본의 복사본입니다 (페이지 제거됨).
Marc에게 감사드립니다!

한국어 中文