github ssh 证书登陆

1,950

每次都要打帐号和密码,重复的工作我们是要封装的

接下来:

Linux 环境

证书准备

  • 进入终端
  • 生成证书 ssh-keygen -t rsa -C "your email"
  • 生成的id_rsa.pub 是公钥 id_rsa是私钥
  • 复制公钥里的代码 
  • 在github 个人中心的设置里 
  • ssh key add new 取好名字

测试ssh

  • ssh -T git@github.com
  • 提示github.com 没有绑定host
  • 进入 /etc/hosts 增加提示的IP 和 github.com 的域名

ubentu 13.10 git version 1.8.3.2 解决方案:ssh -T git@github.com出现Permission denied (publickey).的问题

    今天的任务是把项目通过git上传的github内,于是就出现了Permission denied (publickey)这个问题,现在我把自己的解决方案分享给大家。

    一般来说,大家在给文件起名的时候,总会起一些自己喜欢的名字,楼主也不例外在使用命令:

ssh-keygen
    生成ssh 密钥的时候,会在

Enter file in which to save the key ("当前所在路径"): “给文件起个名字”
    这里随便起一个名字,这样问题就出来了,你起的这个名字没有和ssh内设定的名字保持一致,所以使用命令

ssh -T git@github.com
    的时候报出Permission denied (publickey).这个错误

    当出现这个问题时,有两个比较简单的解决办法:

    1)    给文件起名字的时候使用 ‘ id_rsa ’ 这个名字

    2)    如果亲非要自己取名子,那就使用

        ssh-add ~/.ssh/你的名字_rsa
            将自己起的名字加入到ssh中

            这样再使用

        ssh -T git@github.com
            就会看到你想要的效果了。
            
        Hi xx! You've successfully authenticated, but GitHub does not provide shell access.

注:在生成密钥的时候,请在 “ ~/.ssh/ ”目录下操作。或者生成后把文件移动到“ ~/.ssh/ ”目录下。

也可以用:
ssh-add -l 查看加入的密钥列表
ssh -v git@github.com 查看调试信息

如果有问题或不准确的地方,请大家及时批评指教,谢谢!

打开这个~/.ssh/id_rsa.pub文件,把里面的所有的内容都拷贝到你的github网站的ssh key里

在github的右上角edit your profile 里找到ssh key,然后add ssh key,把东西拷贝到key就可以了,title随便填。

https git 怎么转到ssh

查看当前地址

git remote -v
origin  https://github.com/yourname/repository.git (fetch)
origin  https://github.com/yourname/repository.git (push)

设置为ssh地址
git remote set-url origin git@github:USERNAME/OTHERREPOSITROY.git

修改完成后查看地址,配置为ssh地址就正确了
git remote -v

known_hosts

ssh会把你每个你访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。我在上面列出的情况,就是这种情况。

原因:一台主机上有多个Linux系统,会经常切换,那么这些系统使用同一ip,登录过一次后就会把ssh信息记录在本地的~/.ssh/known_hsots文件中,切换该系统后再用ssh访问这台主机就会出现冲突警告,需要手动删除修改known_hsots里面的内容。

有以下两个解决方案:

  1. 手动删除修改known_hsots里面的内容;
  2. 修改配置文件“~/.ssh/config”,加上这两行,重启服务器。
StrictHostKeyChecking no
UserKnownHostsFile /dev/null

优缺点:

  1. 需要每次手动删除文件内容,一些自动化脚本的无法运行(在SSH登陆时失败),但是安全性高;
  2. SSH登陆时会忽略known_hsots的访问,但是安全性低。

mac下解决开机需要每次ssh-add的问题

1、使用ssh config 配置

针对不同的域名使用不同的私钥

Host github.com
	User git
	HostName github.com
	PreferredAuthentications publickey
	IdentityFile ~/.ssh/id_rsa

Host 172.16.167.252
	User git
	HostName 172.16.167.252
	PreferredAuthentications publickey
	IdentityFile ~/.ssh/xiangbiwen_rsa

坑点 Host 后面接的是 ssh 仓库地址中 @ 后面的东西

如 git@github.com:xiejunping/egg-ts.git

@ 与 : 之间的内容

这里可以自定义 如果写成 github git clone git@github:xiejunping/egg-ts.git 才行

所以如果是ip 也要写对应的ip

至于HostName 原则上是与Host 保持一致,但如果做本地hosts绑定的,这里可以自定义

linux Permission 0644 for are too open 错误解决方案

如果文件是你重别的电脑拷过来的,会提示这样的错误,原因:

私钥文件权限过高,改成600 就好了

命令 chmod 600 ~/.ssh/xxx_rsa