zoukankan      html  css  js  c++  java
  • Git学习之常见错误 clone被拒绝

    Git学习之常见错误


    问题:

      git clone 时 报错 Permission Denied (权限被拒绝)。


    解决方法:

      需要把本地的公钥上传到服务器。


    解决步骤:

      ①第一步,设置本地的git的用户名和邮箱。

      鼠标右键 -->【Git Bash Here】,打开命令行。  

    (注意 --global 表明本机的所有git仓库均使用该配置,根据自己实际需求配置)

    git config --global user.name '用户名'
    
    git config --global user.email '邮箱地址'

      查看用户名和邮箱:

    git config --global user.name 
    
    git config --global user.email

      ②第二步,本地生成公钥。

      鼠标右键 -->【Git Bash Here】,打开命令行操作。

    $ ssh-keygen -t rsa -C "git的email"

      然后会看到以下提示:

      输入私钥文件保存的位置,如果不想指定,就按Enter键,选择默认的:

    Enter file in which to save the key (/c/Users/admin/.ssh/id_rsa): 

      然后输入两次密码: 

    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:

      正常会生成私钥文件和公钥文件:id_rsa和id_rsa.pub。

      ③第三步,服务器端git打开RSA认证。

      进入/etc/ssh目录,编辑sshd_config,把下面三个注释打开。

    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile .ssh/authorized_keys

      保存,并重启服务,

    /etc/rc.d/init.d/sshd restart

    //如果没有rc.d或者sshd命令,可以使用
    sudo service ssh restart

      ④第四步,将客户端的公钥导入服务器authorized_keys文件里。

      这里需要注意,在第三步配置RSA认证时,配置的这一行:

      AuthorizedKeysFile .ssh/authorized_keys

     这一行,表示的实际意思是 $Home/.ssh/authorized_keys,
      然后还要根据管理Git服务的用户是谁,来确定具体的路径,

     例如:
       管理git的用户是git,那么实际存放公钥的路径是 /home/git/.ssh/authorized_keys。
       管理git的用户是zhang_san,那么实际存放公钥的路径是 /home/zhang_san/.ssh/authorized_keys。

     一般情况,都会配置一个专门的用户对git和代码进行管理,假如我们创建一个zhang_san用户来管理:
    useradd zhang_san
    passwd zhang_san
    //输入密码
     然后创建zhang_san管理git公钥文件:
     sudo mkdir -p /home/zhang_san/.ssh
    cd /home/zhang_san/.ssh
    sudo touch authorized_keys

      修改文件所属用户、所属组、以及具体权限:  

    sudo chown -R zhang_san:zhang_san /home/zhang_san/.ssh
    //切换到zhang_san用户
    su zhang_san
    
    cd /home/zhang_san
    chmod 700 .ssh
    cd .ssh
    chmod 600 authorized_keys

      把本地的公钥,复制到authorized_keys文件中。

      ⑤克隆代码: 

    git clone zhang_san@静态IP:/home/www/项目名字

      输入第二步生成公钥时输入的密码,就可以克隆下来代码了。



    为了安全考虑,在创建的管理git服务的用户一般不允许登录shell,

    方式一:

      创建用户时,不使用超级用户创建,也不实用sudo 命令,新创建用户就无法登陆。

    方式二:

      编辑/etc/passwd文件完成。找到下面的一行:

    git:x:1001:1001:,,,:/home/git:/bin/bash  

    最后一个冒号后改为:

    git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell  

    这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。





  • 相关阅读:
    ArcMap导出图层属性为excel表
    ArcMap面转为线
    vue(18)声明周期函数
    geoserver发布mbtiles文件
    docker部署geoserver
    vue(17)组件插槽slot的使用
    vue(16)父子组件之间直接相互访问
    MySQL常用查询语句积累
    数据库的基本设计
    HashMap学习
  • 原文地址:https://www.cnblogs.com/gyfluck/p/9598360.html
Copyright © 2011-2022 走看看