0%

通过密钥对服务器进行SSH连接

常见的ssh连接服务器有两种,一是通过用户名和密码登录,这也是我们最常用的,而另一种是通过密钥来登录,这种不仅可以省去密码,而且更加安全可靠。

服务器端生成密钥

首先连接服务器,输入ssh-keygen建立密钥, 会跳出以下内容:(中文备注的地方需要输入处理)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
➜  ~ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): // 直接按Enter,用默认文件位置
Enter passphrase (empty for no passphrase): // 直接Enter,不用密码
Enter same passphrase again: // 重复密码
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
The key's randomart image is:
+---[RSA 2048]----+
| |
| |
| |
| o + |
| o O S . |
| X O = o |
| @ O.* X |
| ..XoX.* + |
| xxxxxxxx |
+----[SHA256]-----+

这样密钥就生成好了,其中id_rsa是密钥,也是我们本地需要的钥匙,id_rsa.pub是公钥,服务器自己持有

服务器配置密钥

~/.ssh文件夹下面可以找到刚才生成的钥匙(我这里是root用户,所以上面显示的是/root

首先需要把id_rsa.pub这个公钥内容复制到authorized_keys

1
cat id_rsa.pub >> authorized_keys

然后需要修改文件的读写权限,保证只有此用户有写权限,一般就设置为以下的权限:

1
2
chmod 600 authorized_keys
chmod 700 ~/.ssh

到这里如果之前没有对服务器ssh进行修改的话,服务器端配置就完成了

客户端配置密钥

其实客户端这里没什么配置的,只要把私钥复制到本地就可以

通过scp命令复制id_rsa文件到本地用户的.ssh文件夹下:

1
scp root@xxxx:~/.ssh/id_rsa ~/.ssh/id_rsa

之后就可以通过密钥登录了,命令如下:

1
ssh root@xxx -i ~/.ssh/id_rsa