网上好多教程会教你安装git,然而好多都是抄袭,所以都是千篇一律,错误的地方都错了,或者该说明的地方都不说明为什么那样配置,此文也是git安装,并且使用SSH连接,但是本文会在一些关键模糊,别人说不清的地方加以详细解释。
SSH1(基于口令的安全验证),只要你知道自己的帐号和口令,就可以登录到远程主机,并且所有传输的数据都会被加密。但是,这种验证方式不能保证你正在连接的服务器就是你想连接的服务器。可能会有别的服务器在冒充真正的服务器,也就是受到”中间人”这种攻击方式的攻击。SSH2(基于密匙的安全验证),需要依靠密匙,也就是你必须为自己创建一对密匙,并把公有密匙放在需要访问的服务器上。如果你要连接到SSH服务器上,客户端软件就会向服务器发出请求,请求用你的密匙进行安全验证。服务器收到请求之后,先在你在该服务器的用户根目录下寻找你的公有密匙,然后把它和你发送过来的公有密匙进行比较。如果两个密匙一致,服务器就用公有密匙加密”质询”(challenge)并把它发送给客户端软件。客户端软件收到”质询”之后就可以用你的私人密匙解密再把它发送给服务器。本文基于SSH2做一个简单的安装使用说明操作步骤:
安装git
推荐非绿色版,因为安装过程中需要设置环境变量,当然如果你会手动设置环境变量,那么也可以使用绿色版。安装包请前往官网下载.安装过程中除了安装位置,其他选项推荐默认选项。
配置git
配置全局信息
1.配置用户名
git config –global user.name “yourname”
用户名是提交至git仓库时所显示的你的名字
2.配置电子邮件git config –global user.email “example@email.com”
电子邮件是提交代码之仓库所展示的电子邮件
以上配置成功后会在用户目录下生成一个“.gitconfig”文件,里面记录了名字和电邮使用SSH
将git使用SSH连接至代码托管平台,此文以GitHub为例
检查当前是否存在SSH密钥
1.打开GitBash,进入到当前用户目录下
cd ~
2.测试当前位置是否已经有已经存在的SSH公钥和私钥ls -al ~/.ssh
如列出的文件中有“id_dsa.pub“,”id_ecdsa.pub“,”id_ed25519.pub“,”id_rsa.pub”之类的文件说明已存在,将这些文件删除(确认这么些文件没有用);
如没有,则可直接进行下一步操作。生成密钥
ssh-keygen -t rsa -b 4096 -C “your_email@example.com”
此命令会将你的电子邮件作为标签生成相关的公钥私钥,生成的过程会首先提示“Enter a file in which to save the key (/c/Users/you/.ssh/id_rsa):[Press enter]”,意思是输入要保存密钥文件的地址,这里我们不输入任何直接回车表示默认位置,然后再回车会出现提示“Enter passphrase (empty for no passphrase): [Type a passphrase]”,这意思是让你输入一个密码短语以便加密你的私钥,一般为了简单我们不选择加密,直接回车,但是如果你实在想把私钥保护起来输入加密密码,那么git每次读取你的私钥首先要先解密,这就需要你输入密码短语。由此可见这样使用SSH并没有比http方式省很多事,所以我们就提到下面的内容来解决此问题。ssh-agent的使用
如果你没有使用密码短语,那么这步可以跳过了,如果你使用了密码短语,又不想每次都输入密码短语,那么这步是你要阅读的。
ssh-agent是一个“密码保险箱”,将你的私钥保存到这个保险箱后,git进程会自动和ssh-agent通信获取密码。然而如果你使用的是绿色版的git,由于一些配置信息,ssh-agent不会自动启动,所以git这时候连接SSH会报错。另外,ssh-agent启动后是在内存开辟了一块空间用作高速缓存来保存密码,所以,ssh-agent进程如果结束后会是会丢失里面保存的私钥信息,也因为如此,ssh-agent每次启动后都会需要你添加私钥进去,那么下面我们进行操作吧:
1.启动ssh-agent
用绿色版git的可以先启动ssh-agenteval $(ssh-agent -s)
如果是安装版的,ssh-agent应该会自动启动但是由于种种原因,没有启动的话,也可以这样操作。
2.将私钥添加至ssh-agentssh-add ~/.ssh/id_rsa
如果设置过密码短语,此时会提示让你输一次密码短语,以便ssh-agent能读取到你的私钥,然后保存在高速缓存里。
那么问题来了:拿到每次都要手动启动ssh-agent,这样太麻烦了,答案是否定的,下面的操作会让ssh-agent自动启动,自动加入密钥。
3.复制下面的内容粘贴到“~/.profile” 或者“ ~/.bashrc”,如果没有的话粘贴到git安装目录下的“ect/bash.bashrc”文件中。
env=~/.ssh/agent.env
agent_load_env () { test -f "$env" && . "$env" >| /dev/null ; }
agent_start () {
(umask 077; ssh-agent >| "$env")
. "$env" >| /dev/null ; }
agent_load_env
# agent_run_state: 0=agent running w/ key; 1=agent w/o key; 2= agent not running
agent_run_state=$(ssh-add -l >| /dev/null 2>&1; echo $?)
if [ ! "$SSH_AUTH_SOCK" ] || [ $agent_run_state = 2 ]; then
agent_start
ssh-add
elif [ "$SSH_AUTH_SOCK" ] && [ $agent_run_state = 1 ]; then
ssh-add
fi
unset env
这样就自动启动ssh-agent,添加私钥操作。
密钥文件生成后,下面就配置到GitHub中
1.Bash下复制公钥文件的内容到剪切板:clip < ~/.ssh/id_rsa.pub
2.登陆giithub,打开“Settings—SSH and GPG keys—New SSH key”,在名称栏里随便填,”Key”里粘贴公钥,然后点击“Add SSH key”保存,可以看到一组指纹。
1.打开gitBash,输入ssh -T git@github.com
回车后可能会看到提示“Are you sure you want to continue connecting (yes/no)?”,这是让你确认指纹和上文中提到的是否一致,然后键入“yes”回车,然后提示“Hi username! You’ve successfully authenticated, but GitHub does not
provide shell access.”