Linux+git+ssh方案,windows下ssh私钥在Linux上配置使用

  • ssh介绍
  • 在Windows上使用git+ssh
  • Windows上ssh生成的密钥文件在Linux上使用
  • Linux上测试、安装和开启ssh服务
  • Linux上安装git
  • Linux上安装GitGUI(gitcola)

ssh介绍

用Git与远端仓库之间进行通信有2种方式,即http和ssh方式。
最直观的区别就是:
· 使用http时,安装简单,但是每次push时,需要输入用户名和密码,比较麻烦;
· 使用ssh时,安装配置步骤稍微多点,但是每次push时,无需输入用户和密码,可直接push,更加方便。
ssh是利用公钥密码技术验证身份的,一份公钥一份私钥,其使用不受平台限制。
另外在安全性上ssh也是比http更好的,目前大部分的git仓库都是支持这2种方式。

在Windows上使用git+ssh

这个配置和就不赘述了,网上很多教程,这儿引用一篇文章说明。

Windows上ssh生成的密钥文件在Linux上使用

可以确认的是,ssh私钥本身是跨平台的,在所有可使用ssh的平台都可以认证成功的。
windows上的ssh私钥文件目录为 C:\Users\xxxxx.ssh

id_rsa :存放私钥的文件
id_rsa.pub :存放公钥的文件
known_hsots :可以保存多个公钥文件,每个访问过计算机的公钥(public key)都记录在.ssh/known_hosts文件中


将整个.ssh文件夹拷贝到linux的用户家目录下,注意它在Linux上是隐藏文件夹。
root用户要放在/root/目录下。
另:
在windiws下创建的比如rsa的密钥,放到了linux下,使用的时候,有可能报各种格式不对等等,这有可能是window平台和linux平台换行符号不同导致的。两个系统回车编码不同,导致密钥认不出来,所以在Linux上随便用个文本编辑把钥匙里的回车格式转一下保存,就可以用了。

Linux上测试、安装和开启ssh服务

netstat -anp|grep :22 //通过检查默认端口22查看是ssh否开启
tcp 0 0 0.0.0.0:22 0.0.0.0:*
tcp 0 36 172.16.0.6:22 211.161.248.60:22447
sudo service sshd status //查看ssh服务状态

没有安装ssh服务的话需要先安装ssh服务(ubuntu)

sudo apt-get update
sudo apt-get install openssh-server

安装 openssh-server时可能出现的错误:

可以看出是openssh-server依赖于openssh-client ,而安装的openssh-server版本需要的openssh-client 版本不匹配。
现在安装的openssh-server依赖于=1:7.2p2-4版本,所以需要对openssh-client 升级或者降级:

sudo apt-get install openssh-client=1:7.2p2-4ubuntu1.10


再启动ssh服务:

sudo service ssh start 

检查服务是否启动:

ps -e | grep ssh

 15575 ?        00:00:00 sshd

ssh进行连接服务器测试当前登录用户家目录下的ssh私钥是否有效:

ssh -T git@192.168.xx.xxx

网上有用 ssh -T git@github 进行测试,连接不通可能是因为不认识github主机,需要配置一下host文件。

可能出现错误 WARNING: UNPROTECTED PRIVATE KEY FILE!


这里是说密钥文件权限不能为0766,因为0766权限太开放了,要求你的密钥文件不能被其它用户读取,所以需要修改一下密钥文件权限。
对前面的私钥文件id_rsa修改降低其权限即可。

chmod 700 id_rsa

再用ssh访问,能获取到文件夹表明私钥配置已经起作用!

再用git clone就可以了,clone之前注意将Linux上的git config设置用户名。

Linux上安装git

Linux上安装GitGUI(gitcola)

更多推荐

在Linux上配置git+ssh方案,windows下ssh私钥在Linux上配置使用,亲测有效