Windows Server 2016에 Windows 용 Git을 설치하고 여러 사람이 개발 한 버전 관리 시스템을 만들 때 ssh가 통과 할 때 git clone이 오류가되는 경우의 해결 방법

Windows Server 2016에 Windows 용 Git을 설치하고 여러 사람이 개발 한 버전 관리 시스템을 만들 때 ssh가 통과 할 때 git clone이 오류가되는 경우의 해결 방법

2022-10-06 last update

6 minutes reading WindowsServer Git

소개



회사 내에서 Git을 이용한 개발 소스 코드의 버전 관리 시스템을 구축할 때 Windows Server에 Git For Windows를 설치하여 여러 사람 개발에서 버전 관리 시스템을 만들 때 참고 사이트처럼 설정하면서 구축 작업을 진행하고 있었는데, 다음과 같은 에러에 시달리기 때문에 그 때의 대처법을 메모한다.

발생한 오류



Windows Server에서 OpenSSH의 sshd를 기동해, 개발용 PC로부터 ssh 접속에 의해 git clone했을 때, 아래와 같은 에러가 발생해 클론 할 수 없었다.
[ユーザー名]@[コンピューター名] MINGW64 ~
$ git clone ssh://[ユーザー名]@[サーバーのIPアドレス]/c:/repos/test.git
Cloning into 'test.git'...
[ユーザー名]@[サーバーのIPアドレス]'s password:


fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

Windows Server에서 Git For Windows의 sshd를 기동했을 때는 상기 에러는 발생하지 않고 clone이 가능하다. 그러나 접속하는 유저명으로 sshd를 기동하지 않으면 아래와 같은 다른 에러가 발생했기 때문에 대처법을 생각하지 않으면 안 되었다.

Windows Server 쪽에서 administrator에서/usr/bin/sshd.exe를 기동해, 클라이언트로부터 administrator 이외의 접속 유저명으로 ssh 접속했을 때 Windows Server측에서 발생하는 에러는 아래와 같은 것이었다.
debug1: temporarily_use_uid: 1049696/1049089 (e=1049076/1049089)
seteuid 1049696: Operation not permitted
debug1: do_cleanup
debug1: Killing privsep child 7364

구축할 버전 관리 시스템의 이미지





설치한 소프트웨어



Windows Server 2016


  • Git for Windows (2.21.0) 64-bit version
  • Win32-OpenSSH v7.9.0.0p1-Beta

  • 개발 작업용 PC


  • Git for Windows (2.21.0) 64-bit version

  • 버전 관리 시스템 작성시 참고로 한 사이트


  • Windows 10 PC에 Git 서버를 세웠다 - Linux 서버가 없지만 Git 서버를 실행하려는 경우의 해결책
  • Linux에서 Windows Server로 SSH로 로그인할 수 있는 환경 설정

  • 해결 방법



    참고로 한 사이트와 같이 설정하면 에러가 발생해 생각대로 동작하지 않았으므로, 다음과 같은 순서를 추가했다.
  • Windows Server의 Git For Windows 명령을 저장하는 폴더로 경로를 통과시킵니다.
  • Window Server의 사용자에게 원격 저장소에 대한 액세스 권한(읽기/쓰기)을 추가합니다.
  • Window Server의 OpenSSH 기본 쉘을 Git for Windows bash로 변경합니다.

  • 1. Windows Server의 Git For Windows 명령을 저장한 폴더로 경로를 통과시킵니다.



    제어판의 시스템 고급 설정을 열고 환경 변수를 엽니다.

    다음과 같은 환경 변수를 추가한다.

    · C:\Program Files\Git\cmd
    · C:\Program Files\Git\usr\bin
    · C:\Program Files\Git\bin
    · C:\Program Files\Git\mingw64\bin
    · C:\Program Files\Git\mingw64\libexec\git-core

    2. Window Server의 사용자에게 원격 리포지토리에 대한 액세스 권한(읽기/쓰기)을 추가합니다.



    Active Directory에서 개발자용 그룹이나 정책을 작성하고 있는 경우에는 개발자 그룹의 쓰기 권한을 Git 리포지토리의 폴더에 부여한다.

    3. Window Server의 OpenSSH 기본 셸을 Git for Windows bash로 변경합니다.


    New-ItemProperty -Path "HKLM:\SOFTWARE\OpenSSH" -Name DefaultShell -Value "C:\Program Files\Git\git-bash.exe" -PropertyType String -Force 
    

    확인



    OpenSSH sshd를 시작합니다.


  • 2. 3. 을 설정한 후, net start sshd 에 의해 OpenSSH sshd 를 기동한다.
    ※ 만약을 위해 PsExec64에서 system 권한으로 기동한다.

  • git clone



    작업용 PC에서 ssh 접속으로 git clone하면 아래와 같이 성공한다.
    [ユーザー名]@[コンピューター名] MINGW64 ~/source
    $ git clone ssh://[ユーザー名]@[サーバーのIPアドレス]/c/repos/test.git
    Cloning into 'test'...
    [ユーザー名]@[サーバーのIPアドレス]'s password:
    warning: You appear to have cloned an empty repository.