0%

Linux 设置密钥登录

多数时候使用密码来登录远程linux服务器是不安全的,许多ssh客户端都会保存密码,有泄密的风险;而如果每次都手动输入密码,就显得不太方便,那么这个时候可以选择使用ssh密钥登录,就是把ssh公钥放到服务器,私钥放到客户端,客户端配置成密钥登录,会更方便也更安全。

生成一个rsa密钥对

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[root@suzaku-20200812 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
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:
7e:7a:29:07:e5:4f:05:b5:8f:98:66:b3:1b:77:71:1b root@suzaku-20200812
The key's randomart image is:
+--[ RSA 2048]----+
| .. |
| . . . |
| . . |
| . . o.o |
| So *..Eo|
| .* .o.o =|
| ...+o ...|
| .o+ .+ . |
| .+ .* |
+-----------------+

默认生成的密钥文件在用户主目录下面的.ssh目录下,一般情况下不建议直接使用root用户进行登录。

密钥配置

将上面生成的id_rsa.pub公钥内容追加到.ssh目录下authorized_keys文件末尾。

1
2
3
cd .ssh
touch authorized_keys -- 如果文件已经存在,则不需要新建
cat id_rsa.pub >> authorized_keys -- 将id_rsa.pub的内容追加到authorized_keys

修改.ssh目录的权限为700,authorized_keys文件的权限为600,否则登录会提示server refuse you key

1
2
3
cd ..
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

普通用户配置

如果你的用户不是root,而是一个普通用户,比如suzaku,那么需要更改.ssh的所有者为suzaku,否则仍然会登录不了:

1
chown -R suzaku:suzaku .ssh

配置授权文件

默认授权文件会读取用户主目录下的.ssh/authorized_keys文件,可以再检查一下配置是否正确。

1
vi /etc/ssh/sshd_config

打开密钥登录

1
2
3
4
5
RSAAuthentication yes
PubkeyAuthentication yes
# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys

使用密钥进行登录

将上面生成的私钥id_rsa文件拷贝到本地,或者拷贝文件内容重新保存也行。

MAC下使用SecureCRT进行登录

  • 打开软件,选择配置->Connection->Protocol,使用SSH2登录
  • 选择Connection->Authentication,选择PublicKey方式
  • 点击右侧Properties进行PublicKey配置
  • 选择Use session public key setting
  • 配置Use identity or certificate file,选择下载的id_rsa文件
  • 保存即可登录

欢迎关注我的其它发布渠道