Git学习之常见错误 clone被拒绝
2023-09-11 14:22:41 时间
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每次一登录就自动退出。
相关文章
- [Git] 给git命令起别名
- centos网卡错误Device eth0 does not seem to be present
- 【Git】如何将本地非git目录与远程创建的git目录建立关联
- Foundation HTML5 Canvas中的2处错误
- eclipse中git推送上传错误 没有足够的数据写入
- 详解Git工作区、暂存区、历史记录区以及git reset、git revert、git checkout等撤销命令的区别
- [Git] Use and Compare the Different git Reset Options: --hard, --soft, and --mixed
- [Practical Git] Filter commit history with git log arguments
- git 邮箱错误-git log 中发现 XXX@163.com邮箱不符合要求,请务必使用公司邮箱。
- Can't load AMD 64-bit .dll on a IA 32-bit platform错误消息的处理
- Atitit git 使用法v2 目录 1. Git客户端工具1 1.1. Tortoisegit git gui 图形化工具。。1 1.2. Ide中的git插件(eclipse idea
- git@github.com - Permission denied publickey错误
- 【MATLAB基础】—错误使用 surf (line 74) 解决
- eclipse git 一个错误:the current branch is not configured for pull No value for key branch.xxx.merge found
- 连续使用两次fread 错误和fread返回值
- ROG魔霸7Plus电脑一直蓝屏错误怎么重装系统?
- 爬虫学习之-git拉取远程错误
- 【Git技巧】第五篇 git log 查看历史提交记录
- Pycharm中修改git提交代码的账户和用户名【Git追溯注解,git blame】
- GIT ---- 常用 Git 命令清单
- Git实战之git客户端上传文件到github
- 【Git】利用 GIT 做版本控制
- 解决办法:git错误 error: failed to push some refs to 'https://github.com/...