• windows 下搭建git服务器,及问题处理。


      最近要做一个源码管理服务器,权衡了一下还是git最适合,搭建服务器前看了网上一些windows下搭建git服务器的帖子,感觉还比较简单,没有太多需要配置的地方,于是开始动手。

          我选择的是 gitfor windows + Tortoisegit + Copssh

          gitfor windows下载地址 http://msysgit.github.io/  最新版的 Git-1.9.4-preview20140611

      putty 用来测试ssh连接 同时还需要工具 puttygen 用来转换 copssh生成的私钥,它们两个格式不一样,连接的时候不注意就会在这里出问题,我就栽到这个坑里。

          先安装Copssh  再 gitfor windows ,Tortoisegit 安装过程比较简单,不想罗列太多的图片,不清楚怎么安装的去找度娘。

          安装好之后,有几点需要注意的:

         1. 配置Tortoisegit:TortoiseGit>Settings

            

          配置好git路径

        

         2. 创建一个git账户管理员权限

         3. 在copssh里激活 git 用户

        

        

        

        

        

         用户激活成功,下面生成公钥和私钥

          

         

        

         

         

          输入密码,此密码为ssh密钥登陆密码。私钥名称,私钥默认放在 copssh 安装目录 ICWhome用户名  下面   ,公钥在 ICWhome用户名.ssh 下面 名称为:authorized_keys

      

      ok,公钥跟私钥生成成功,下面打开puttygen 将私钥转换成 putty格式 

       

        点击 Load 选择刚才生成的 private_key.ppk 文件,输入密码

     

         点击 Save private key 保存私钥,注意不要覆盖原来的私钥,copssh 私钥格式跟 putty私钥格式不一样,测试ssh连接时用 puttygen 生成的私钥

       客户端git连接ssh服务器的时候要用copssh生成的私钥。 我在刚开始搭建服务器的时候客户端用的putty生成是私钥,putty测试连接没有问题,用

       git 连接是老是报没有权限,郁闷了一天后来才发现问题出在这里。

         

    4. 找到copss安装目录C:Program Files (x86)ICWetc

            下面的sshd_config,跟ssh_config 文件

            PasswordAuthentication 设置为 no

       port 设置为 22

            防火墙打开22端口  用 telnet 命令链接查看是否能够连接,没问题接着下面走

            根据自己的安装目录, 将C:Program Files (x86)Gitlibexecgit-core目录下的git.exe , git-receive-pack.exe , git-upload-archive.exe , git-upload-pack.exe复制到C:Program Files (x86)ICWin目录下

              C:Program Files (x86)Gitin 目录下的libiconv-2.dll复制到 C:Program Files (x86)ICWin目录下

       用putty 测试是否能够连上服务器

       

     

           填上服务器名称端口

     

          

     

          Author选项,导入私钥点击 open ,如果能够连接说明ssh服务器搭建成功。

     

    5. 客户端Git配置

    (最好的做法是在客户端用  ssh-keygen -t rsa 生成公钥跟私钥  把公钥加到 服务器 ICWhome用户名.ssh 下面 authorized_keys 里面

    私钥放到 客户端 用户名/.ssh 目录下)

    将生成的私钥放到客户端 用户名/.ssh 目录下

    同目录下添加 config文件,注意没有扩展名

    文件输入如下内容
    Host server            #执行git命令时服务器别名#
    HostName 192.168.1.110   #这里是你服务器的地址#
    User  git                            #登陆服务器用户名#
    IdentityFile ~/.ssh/private_key.ppk #私钥地址#

    6. 服务器端 在ICWhome用户名 下用Tortoisegit 创建一个文件夹   test.git

    右键 Git Create repository here..  勾选 Make it Bare ( No working directories) 创建空仓库

    7. 客户端执行 $git clone git@server:test.git  输入密码

     ok,克隆成功至此git服务器搭建好了!

    可能遇到的问题:

    A.  私钥不要搞混了用 putty 连接同 git 连接是用两不同的私钥,私钥不对是话会报错:

    Permission denied (keyboard-interactive).

    fatal:Could not read from remote repository.

    如果出现这种情况不能确认是否是私钥有问题时可以这样处理:

    到服务器端激活密码验证,

            找到copss安装目录C:Program Files (x86)ICWetc

            下面的sshd_config,跟ssh_config 文件

            PasswordAuthentication 设置为 yes

    这样的话连接服务器需要输入git用户 的用户密码,通过用户名登陆,不走密钥验证,如果能连接成功,说明一定是私钥问题。

    B. 缺少文件

        我在克隆时碰到过缺少libiconv-2.dll 的情况

       git 提示 /user/bin/git-upload-pack.exe: error while loading shared libraies: libiconv-w.dd: cannot open shared object file: No such file or directory

       只需将C:Program Files (x86)Gitin 目录下的libiconv-2.dll 复制到 C:Program Files (x86)ICWin目录下就可以了

    第一篇博文,没太注意排版,目的是帮大家解决问题,如果看了我的文章真对大家有所帮助请赞一下咯!

  • 相关阅读:
    钉钉服务器端SDK PHP版
    戒不掉
    亲历钓鱼网站
    我整理的PHP 7.0主要新特性
    JavaScript中JSON的处理心得
    X3D中Profile如何翻译
    你可以写什么?
    Gitblit中采用Ticket模式进行协作开发
    理解JavaScript中的事件处理 阻止冒泡event.stopPropagation();
    测试Remoting三种信道Http,Tcp,Ipc和Web Service的访问速度 (转)
  • 原文地址:https://www.cnblogs.com/fengh/p/3922635.html
Copyright © 2020-2023  润新知