另一个例子
# # Main gitlab.com server # Host gitlab.com RSAAuthentication yes IdentityFile ~/my-ssh-key-directory/my-gitlab-private-key-filename User mygitlabusername
另一个例子
# # Our company's internal GitLab server # Host my-gitlab.company.com RSAAuthentication yes IdentityFile ~/my-ssh-key-directory/company-com-private-key-filename
另一个例子
# GitLab.com Host gitlab.com PreferredAuthentications publickey IdentityFile ~/.ssh/gitlab_com_rsa # Private GitLab instance Host gitlab.company.com PreferredAuthentications publickey IdentityFile ~/.ssh/example_com_rsa
另一个例子
# gitee Host gitee.com HostName gitee.com PreferredAuthentications publickey IdentityFile ~/.ssh/gitee_id_rsa # github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/github_id_rsa
首先,检查您的~/.ssh/config文件是否存在于默认位置。
$ open ~/.ssh/config > The file /Users/you/.ssh/config does not exist.
- 将您的SSH私钥添加到ssh代理中,并将密码存储在钥匙串中。如果您使用其他名称创建了密钥,或者如果您正在添加具有不同名称的现有密钥,请将命令中的id_rsa_github替换为私钥文件的名称。
$ ssh-add ~/.ssh/id_rsa_github
即ssh-add <directory to private SSH key>
如果执行ssh-add时提示"Could not open a connection to your authentication agent",可以现执行命令:
$ ssh-agent bash
然后再运行ssh-add命令。
- 查看添加结果
ssh-add -l
补充:
# 可以通过 ssh-add -l 来确私钥列表 $ ssh-add -l # 可以通过 ssh-add -D 来清空私钥列表 $ ssh-add -D
一、将公钥粘贴到git服务器平台上,如GitHub
当然可以直接打开刚生成的公钥文件id_rsa_github.pub文件,复制全部内容去平台Add SSH Key;也可以使用命令复制公钥文件内容贴到平台 Add SSH Key。
- 附:使用命令复制
将SSH公钥复制到剪贴板上
$ pbcopy < ~/.ssh/id_rsa_github.pub # Copies the contents of the id_rsa_github.pub file to your clipboard
提示:如果pbcopy不起作用,您可以找到隐藏的.ssh文件夹,在您最喜欢的文本编辑器中打开文件,并将其复制到剪贴板。
其规则就是:从上至下读取config的内容,在每个Host下寻找对应的私钥。
这里将GitHub SSH仓库地址中的git@github.com替换成新建的Host别名如github2,那么原地址是:git@github.com:username/Mywork.git,替换后应该是:github2:username/Mywork.git。
二、测试连接
测试一下
$ ssh -T github2 Hi 0xJoker! You've successfully authenticated, but GitHub does not provide shell
- 输入以下命令测试
$ ssh -T git@github.com # Attempts to ssh to GitHub
您可能会看到这样的警告:
> The authenticity of host 'github.com (IP ADDRESS)' can't be established. > RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8. > Are you sure you want to continue connecting (yes/no)?
- 验证您看到的消息中的指纹是否与GitHub的RSA公钥指纹匹配。如果是这样,则键入yes:
> Hi username! You've successfully authenticated, but GitHub does not > provide shell access.
您可能会看到以下错误信息:
... Agent admitted failure to sign using the key. debug1: No more authentication methods to try. Permission denied (publickey).
这是某些Linux发行版的已知问题。有关更多信息,请参阅“错误:代理承认未能签名”。
- 验证生成的消息是否包含您的用户名。如果您收到“permission denied【权限被拒绝】”消息,请参阅“Error: Permission denied (publickey)【错误:权限被拒绝(公钥)”】。
三、常见问题处理
经常与会遇到下面这种情况,我也很纳闷,每次都解析到不到域名和地址
ssh: Could not resolve hostname git.oschina.net: nodename nor servname provided, or not known
查资料之后的解决办法是:
step1.
ping address
获取到对于地址的ip
step2. 在/etc/hosts中添加一行如下:
ip address
xxxxxxxxxx
这样就可以玩起来了。