Git学习之常见错误


问题:

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


解决方法:

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


解决步骤:

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

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

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

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

  查看用户名和邮箱:

  1. git config --global user.name
  2.  
  3. git config --global user.email

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

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

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

  然后会看到以下提示:

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

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

  然后输入两次密码: 

  1. Enter passphrase (empty for no passphrase):
  2. Enter same passphrase again:

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

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

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

  1. RSAAuthentication yes
  2. PubkeyAuthentication yes
  3. AuthorizedKeysFile .ssh/authorized_keys

  保存,并重启服务,

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

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

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

  1.   AuthorizedKeysFile .ssh/authorized_keys
  2.  
  3.  这一行,表示的实际意思是 $Home/.ssh/authorized_keys
      然后还要根据管理Git服务的用户是谁,来确定具体的路径,
     例如:
       管理git的用户是git,那么实际存放公钥的路径是 /home/git/.ssh/authorized_keys
  1.    管理git的用户是zhang_san,那么实际存放公钥的路径是 /home/zhang_san/.ssh/authorized_keys
  2.  
  3.  一般情况,都会配置一个专门的用户对git和代码进行管理,假如我们创建一个zhang_san用户来管理:
  1. useradd zhang_san
  2. passwd zhang_san
  3. //输入密码
  1.  然后创建zhang_san管理git公钥文件:
  1. sudo mkdir -p /home/zhang_san/.ssh
  1. cd /home/zhang_san/.ssh
  1. sudo touch authorized_keys

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

  1. sudo chown -R zhang_san:zhang_san /home/zhang_san/.ssh
  1. //切换到zhang_san用户
  2. su zhang_san
  3.  
  4. cd /home/zhang_san
  5. chmod .ssh
  6. cd .ssh
  7. chmod authorized_keys

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

  ⑤克隆代码: 

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

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


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

方式一:

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

方式二:

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

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

最后一个冒号后改为:

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

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


  1.  

Git学习之常见错误 clone被拒绝的更多相关文章

  1. Git学习之常见错误 git push 失败

    Git学习之常见错误 git push 失败 问题描述: git push Counting objects: , done. Delta compression using up to thread ...

  2. Git 学习笔记--删除错误提交的commit

    如果不小心把错误的commit给commit了,可以对其进行撤销 1.使用git log查看commit日志,找到错误提交前一版本commit的哈希值; 2.使用git reset --hard co ...

  3. Oracle学习之常见错误整理

    一.ORA-12154: TNS: 无法解析指定的连接标识符 在程序中连接Oracle数据库的方式与其他常用数据库,如:MySql,Sql Server不同,这些数据库可以通过直接指定IP的方式连接, ...

  4. ssh相关原理学习与常见错误总结

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  5. git遇到的常见错误整理

    远程仓库与本地代码不一致 解决: git pull --rebase git@gitee.com:l544402029/MUTAO.git 将仓库里的代码pull下来  ,然后重新进行git add ...

  6. Git学习笔记(0)-错误汇总

    一.LF will be replaced by CRLF 1.发现问题 $ git add welcome.txt warning: LF will be replaced by CRLF in w ...

  7. 【python+selenium学习】常见错误: 'gbk' codec can't decode byte 0xb0 in position 30

    最近编写的自动化脚本,数据部分使用到了从配置文件中取,即自定义config.ini,但是在读取配置文件的时候却报错了'gbk' codec can't decode byte 0xb0 in posi ...

  8. Linux学习笔记 | 常见错误之VMware启动linux后一直黑屏

    方法1: 宿主机(windows)管理员模式运行cmd 输入netsh winsock reset 然后重启电脑 netsh winsock reset命令,作用是重置 Winsock 目录.如果一台 ...

  9. Linux学习笔记 | 常见错误之无法获得锁

    问题: 当运行sudo apt-get install/update/其他命令时,会出现如下提示: E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资 ...

随机推荐

  1. ES-自然语言处理

    前言 自然语言处理(Natural Language Processing)是计算科学领域与人工智能领域中的一个重要方向.它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法.自然语言处理 ...

  2. Git使用简析

    推送本地操作 初始化一个本地Git仓库,在需要添加版本控制的文件夹根目录中使用git init命令. 添加文件到本地Git仓库: git add 文件名 # 添加文件到暂存区 git add . # ...

  3. docker上配置nginx负载均衡

    采用ubuntu系统,docker安装自行百度 1.安装tomcat docker run -d -p : tomcat docker run -d -p : tomcat 安装两个实例,端口分别为8 ...

  4. 数据库系统概论(2)——Chap. 2 关系数据库基础

    数据库系统概论(2)--Chap.2 关系数据库基础 一.关系数据结构及形式化定义 1.关系 关系模型的数据结构只包含单一的数据结构--关系.在关系模型中,现实世界的实体及实体间的各种联系均用单一的结 ...

  5. SQLite – HAVING 子句

    SQLite – HAVING子句 HAVING使您能够指定过滤条件哪一组结果出现在最终的结果. WHERE子句的地方条件选定的列, 在有HAVING 子句的地方 就有GROUP BY子句包含的条件组 ...

  6. JS concat() 方法

    [数组元素的合并] 一. concat() 方法 concat() 方法用于连接两个或多个数组. 返回一个新的数组.该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的.如果 ...

  7. Python 中列表、元祖、字典

    1.元祖: 对象有序排列,通过索引读取读取, 对象不可变,可以是数字.字符串.列表.字典.其他元祖 2.列表: 对象有序排列,通过索引读取读取, 对象是可变的,可以是数字.字符串.元祖.其他列表.字典 ...

  8. WPF知识点全攻略00- 目录

    知识点目录如下: 1.WPF相对WinFrom的优缺点 2.WPF体系结构 3.XAML 4.XAML页面布局 5.XAML内容控件 6.WPF中的“树” 7.Binding 8.依赖属性 9.附加属 ...

  9. JS的本地保存localStorage、sessionStorage用法总结

    localStorage 生命周期是永久的  这意味着除非用户显示在浏览器提供的UI上清除localStorage信息,否则这些信息将永远存在. sessionStorage 生命周期为当前窗口或标签 ...

  10. QT+信号有参数与无参数的实现+QT4和QT5在信号和槽使用上的区别

    在QT5中,信号有参数和无参数 #ifndef SUBWIDGET_H #define SUBWIDGET_H #include <QWidget> #include <QPushB ...