github、gitlab、ssh密钥登录

一直对ssh密钥登录半知半解,以前都是跟着教程自己走一遍,每次都去查看,这次就认真记录一下,可能遇到的情况。github多账号登录问题,github、gitlab多网站账户密钥问题以及ssh密钥登录问题。

gitlab、gitlab

生成密钥

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
ssh-keygen -t ed25519 -C "your_email@example.com"
or
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
#####输出
Generating public/private ed25519 key pair.
Enter file in which to save the key (/c/Users/libai/.ssh/id_ed25519): # 文件存储位置
Enter passphrase (empty for no passphrase): # 输入密钥 密码 可留空
Enter same passphrase again: # 确认密码
Your identification has been saved in /c/Users/libai/.ssh/id_ed25519 # 储存位置 私钥
Your public key has been saved in /c/Users/libai/.ssh/id_ed25519.pub # 存储位置 公钥
The key fingerprint is:
SHA256:JiEaUc9F3/yd6WsU2nAnl5PHTcIXyS5K/4RnIV+Cx2Y dufukai@zhengzihui.com
The key's randomart image is:
+--[ED25519 256]--+
| ... .o ...o|
| . o . . o ooo|
| . . + . oo.=+|
| o . . ..=EXX|
| . . S . o+@*O|
| o . +.B |
| *. |
| o.|
| .. |
+----[SHA256]-----+

复制公钥到 github、gitlab

id_ed25519 为私钥

id_ed25519.pub 为公钥

打开公钥id_ed25519.pub,复制内容 到github或者 gitlab中。

测试ssh连接

1
2
3
4
5
6
7
8
9
10
11
12
ssh -T git@github.com
or
ssh -T git@192.168.5.130 # 自建gitlab地址

您可能会看到类似如下的警告:

> 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)?

输入 yes
就可以了

github、gitlab不同邮箱(同样适用多个github不同邮箱)

上面生成密钥 -C 指定邮箱 ,如果你有多个github或者gitlab帐号,且使用不同邮箱。需要修改公钥和私钥名称配置config

当创建第一个github的密钥过后,修改公钥和私钥为github_id_ed25519、公钥为github_id_ed25519.pub,当然加上邮箱更好。xx@gmail_github_id_ed25519

在创建第二个gitlab。

然后你就有了

  1. github_id_ed25519
  2. github_id_ed25519.pub
  3. gitlab_id_ed25519
  4. gitlab_id_ed25519.pub

然后windows在C:\Users\用户名\.ssh,linux在 ~/.ssh下。

配置config

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 添加config配置文件
# vi ~/.ssh/config

# 文件内容如下:
# gitlab
# github
Host github-libaibuaidufu
HostName github.com
User libaibuaidufu
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_ed25519

Host github-dfkai
HostName github.com
User dfkai
PreferredAuthentications publickey
IdentityFile ~/.ssh/xxx@qq.com_github_id_ed25519

Host 192.168.5.130
HostName 192.168.5.130
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitlab_id_ed25519

# 配置文件参数
# Host : Host可以看作是一个你要识别的模式,对识别的模式,进行配置对应的的主机名和ssh文件
# HostName : 要登录主机的主机名
# User : 登录名
# IdentityFile : 指明上面User对应的identityFile路径 私钥位置
# Port : 指定端口 默认 22

这样就可以在不同的账户之间都是用到ssh了。

测试连接:

1
2
3
4
5
6
7
ssh -T git@host 上面的host

ssh -T git@github-libaibuaidufu

ssh -T git@github-dfkai

ssh -T git@192.168.5.130

服务器SSH连接

客户端创建密钥

1
2
3
4
ssh-keygen -t rsa 
一顿回车,如果需要修改配置请看上面的介绍

生成id_rsa私钥,id_rsa.pub 公钥

复制公钥内容到 服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
cd ~/.ssh

vi authorized_keys

粘贴公钥内容到里面去

或者

复制公钥文件到 服务器 ~/.ssh
cd ~/.ssh

cat id_rsa.pub >> authorized_keys

反正最后一定要复制进去,不管用什么方法

设置权限 1可执行 2 可写 4 可读
chmod 600 authorized_keys # 可读可写
chmod 700 ~/.ssh # 可读可写可执行

配置ssh,打开密钥登录

编辑/etc/ssh/sshd_config

1
2
RSAAuthentication yes
PubkeyAuthentication yes

另外,请留意 root 用户能否通过 SSH 登录:

1
PermitRootLogin yes

注意:当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录:

1
2
PasswordAuthentication no

最后,重启 SSH 服务:

1
2
[root@host .ssh]$ service sshd restart

连接服务器

使用xshell,输入服务器,选择密钥登录,选择你客户机上的私钥id_rsa,如果设置了私钥密码(看上面介绍),请输入私钥密码,没有就留空。则完成登录。

或者

输入命令连接

1
2
3
4
5
ssh 192.168.5.106
xshell会让你输入用户名
然后让你输入密码 或者选择密钥
则完成登录

能不能跟简单一点呢。

当然可以,例如上面我们配置的config一样

在客户端加上以上配置。~/.ssh/config

1
2
3
4
5
6
Host 192.168.5.106
HostName 192.168.5.106
PreferredAuthentications publickey
User root
IdentityFile ~/.ssh/id_rsa

然后测试

1
2
3
4
5
6
ssh 192.168.5.106 
就可以直接连接了
使用xshell 依然会让你输入用户名和选择密钥位置

使用cmd 或者 bash 则没有了 可能是xshell限制