git 基础操作,公私钥认证/ssh公私钥登录
一、登录公私钥和git公私钥
1、服务器使用公钥,本地使用私钥;
2、ssh公钥登录服务器,与git公钥认证是同一套系统,不同的linux用户;
3、例如以root用户登入服务器, cd ~/.ssh vi authorized_keys ,用于存放登录公钥,形如
ssh-rsa AAA************* companyPC ssh-rsa AAA************* myMacBook
4、切换到git用户,su git,同样的 cd ~/.ssh vi authorized_keys,用于存放git验证的公钥,形如
git用户的ssh授权文件位置 /home/git/.ssh/authorized_keys
ssh-rsa AAA************* companyPC-git ssh-rsa AAA************* myMacBook-git
5、公私钥生成命令(Linux或MAC系统)。
ssh-keygen -t rsa -P '' 这里的-P后面填的是密码,可为空,一般SSH登录的建议设密码,GIT认证用的可以留空。
这个命令则会在提示的指定目录生成两个文件 id_rsa 私钥文件 id_rsa.pub 公钥文件
6、打开id_rsa.pub文件,复制内容到第3或4的服务器文件中。
本地登录/GIT检出时,选择使用私钥的方式,使用刚才生成的id_rsa文件。
7、使用tortoiseGIT时,使用的私钥是ppk格式,需要下载puttygen,生成ppk格式类型的公私钥对,或转换成ppk格式的公私钥对。
二、搭建 git 服务器
1、安装git yum install git
2、创建一个git用户,用来运行git服务 adduser git ,并 su git 切换到git用户
3、在用户文件夹新建 mkdir ~/.ssh 文件夹,并设置文件夹权限为700 , chmod 700 ~/.ssh
3、创建证书登录:
收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到 /home/git/.ssh/authorized_keys 文件里,一行一个。
4、在服务器的 /git/myProj 文件夹中创建新的裸仓库 git init --bare ,并把owner改为git chown -R git /git/myProj
5、由于git默认拒绝了push操作,需要进行设置,修改 /git/myProj/config 文件后面添加如下代码:
[receive]
denyCurrentBranch = ignore
6、禁用shell登录:
出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
git:x:1001:1001:git user:/git:/bin/bash
改为:
git:x:1001:1001:git user:/git:/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
三、MAC版sourceTree使用私钥登录仓库
1、MAC版sourceTree没有单独的项目设置公钥,使用的是系统里的配置登录;
2、使用上面的方法生成好公私钥文件,本地使用的是私钥文件;
3、假设私钥文件的存放路径为 /Users/batsing/git-key/id_rsa ;
4、MAC电脑打开命令行工具,进入本人目录 cd ~ ,ls -a 查看是否存在 .ssh文件夹,如果没有则创建,如果有则进入.ssh文件夹;
5、现在所在的目录为 ~/.ssh,在本目录用VI编辑器新建config文件, vi config ,按i进入编辑状态,输入以下文本;
Host 127.0.0.1
Port 12200
User git
IdentityFile /Users/batsing/git-key/id_rsa
Host为git服务器的IP地址,Port为端口,User为登录用户,IdentityFile后面填私钥文件的路径;
6、保存并退出VI编辑器,这样sourceTree要用的git私钥就配置好了。
7、检查config文件和私钥文件,权限需要为600,chmod 600 id_rsa 否则也不能成功。若还有问题,使用控制台 git clone 项目 来可以查看具体问题原因
8、现在sourceTree就可以拉取、推送等操作了。重启电脑配置不会丢失。
9、命令行克隆项目到本地当前文件夹 git clone 项目网址 ./
四、git 撤销,放弃本地修改
1、未使用 git add 缓存代码时
可以使用 git checkout filepathname (比如: git checkout readme.md )。放弃所有的文件修改可以使用 git checkout . 命令。
此命令用来放弃掉所有还没有加入到缓存区(就是 git add 命令)的修改:内容修改与整个文件删除。但是此命令不会删除掉刚新建的文件。因为刚新建的文件还没已有加入到 git 的管理系统中。所以对于git是未知的。自己手动删除就好了。
2、已经使用了 git add 缓存了代码
可以使用 git reset HEAD filepathname (比如: git reset HEAD readme.md)来放弃指定文件的缓存,放弃所以的缓存可以使用 git reset HEAD . 命令。
此命令用来清除 git 对于文件修改的缓存。相当于撤销 git add 命令所在的工作。在使用本命令后,本地的修改并不会消失,而是回到了如(一)所示的状态。继续用(一)中的操作,就可以放弃本地的修改。
git 基础操作,公私钥认证/ssh公私钥登录的更多相关文章
- Git基础操作
配置秘钥 1.检查本机有没有秘钥 检查~/.ssh看看是否有名为d_rsa.pub和id_dsa.pub的2个文件. $ ~/.sshbash: /c/Users/lenovo/.ssh: Is a ...
- 《Pro Git》笔记2:Git基础操作
第二章 Git基础 Git基础包括:版本库的创建和获取,文件添加修改提交等基本操作,状态查询,远程版本库管理和同步,打标签. 1.取得项目的Git版本库 基于Git的工作流要以Git版本库为基础,即可 ...
- 【Git】Git基础操作
repository:版本库又名仓库,可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改.删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以&q ...
- python flask学习(1)与Git基础操作
今天从简单的flask开始完成Flask web开发的学习.今天学习了Git和GitHub项目的提交. Git尝试提交过程中出现了"Could not read from remote re ...
- Git基础操作及协作流程
一整套流程帮你实践整个 Git 操作基础流程. 来源:https://docs.microsoft.com/zh-cn/learn/paths/intro-to-vc-git/ Git 介绍 配置 G ...
- Git 基础操作
[TOC] 在Linux上安装Git $ git --version #查看git的版本号 $ sudo apt-get install git # 安装git 创建版本库 $ git init # ...
- python git 基础操作
模块安装 pip install gitpython 基本用法 1. 初始化 from git import Repo Repo.init('/data/test2') # 创建一个git文件夹 # ...
- 有关Git基础操作的学习
Git简介 Git是一个免费的开源 分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容. Git 易于学习, 占地面积小,具有闪电般的快速性能.它具有诸如Subversion,CVS,P ...
- 『现学现忘』Git基础 — 14、Git基础操作的总结与补充
目录 1.Git本地版本库结构 2.Git常用操作方法 3.补充:添加多个文件到暂存区 4.补充:提交操作未写备注 5.补充:从工作区直接提交到版本库 1.Git本地版本库结构 如下图所示: 工作区( ...
- Git 学习笔记--1.Git基础操作
取得项目的Git仓库 有两种方式取得Git项目仓库.第一种是在现存的目录下,通过导入所有文件来创建新的Git仓库.第二种是从已有的Git仓库克隆出一个新的镜像仓库. 在工作目录中初始化新仓库 要对现 ...
随机推荐
- Astah Community安装教程及使用说明(包括括菜单命令解释、操作向导说明、快捷命令说明)
一.安装教程: 1.双击下载好的文件,允许安装(现在官网已经停刊免费的社区版了,如果想要下载社区版需要从其他地方寻找资源) 2.选择安装的语言,English,点击OK 3.next,接受协议,nex ...
- 二十、基于Vant Weapp的生日管家
目前市面上提供了一些免费开源的第三方小程序UI组件库,可以下载后放到项目文件夹中直接使用,比起开发者从头开始自定义组件更为方便.高效.本次考虑使用第三方UI组件来实现界面的视觉统一.本次以有赞第三方U ...
- uni-app项目process is not defined
前情 uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,公司项目就是主推uni-app. 坑位 最近在开发一 ...
- 干货大分享!带你了解数栈批流统一的高效数据同步插件—FlinkX
一.什么是FlinkX FlinkX是一款基于Flink的分布式离线/实时数据同步插件,可实现多种异构数据源高效的数据同步,其由袋鼠云于2016年初步研发完成,目前有稳定的研发团队持续维护,已在Git ...
- 阻止vue组件vuedraggable在使用时打开浏览器新标签
前言 浏览器在文字拖动时会打开链接,图片拖动时打开新窗口,这是浏览器的特性. vue-draggable组件就是需要拖动的,就与这个特性契合了,但大多时候在项目中我们不需要这个特性. 解决方式 需要在 ...
- 【EI期刊收录】第六届材料化学与复合材料国际学术会议(MCCM 2025)
[会议亮点] 1. 前五届均已见刊检索 2. 支持线上参会,线上做口头报告,线上做海报展示 3. 广东工业大学主办-已确定线下 4. 本届EI期刊合作,并延续JPCS同步收录,双出版,多种选择 第六届 ...
- 将各种实体类转成JSON(com.alibaba.fastjson.JSONObject)
当和其他系统对接时,因为某些原因,本系统需要根据不同条件查询不通的实体类,并以JSON格式传输数据,需要将各种实体类转成json 1 public <U> JSONObject proce ...
- rustdesk自建服务器
前言 rustdesk是一款免费开源的 远程控制软件. 它内置服务器 开箱即用. 不过提供的免费服务器在国外,白嫖起来 有点卡顿 建议自建服务器 . 下边是教程 安装docker和docker com ...
- Educational Codeforces Round 180 (Rated for Div. 2) C. Coloring Game
C – Coloring Game 思路:不难看出,当 Alice 选完三个数 a b c(其中 a ≤ b ≤ c)后,Bob 能选的只有两种情况: 选择 c,这样只用比较 a+b 和 c 的大小关 ...
- 图论 III
本文主要讲解:网络流,二分图染色,2-sat,差分约束 定义与记号 基本定义 图:一张图 \(G\) 由若干个点和连接这些点的边构成.点的集合称为 点集 \(V\),边的集合称为 边集 \(E\),记 ...