设置 SSH 通过密钥登录

我们一般使用 SSH 客户端来远程管理 Linux 服务器。但是,一般的密码方式登录,容易有密码被暴力破解的问题。所以,一般我们会将 SSH 的端口设置为默认的 22 以外的端口,或者禁用 root 账户登录。其实,有一个更好的办法来保证安全,而且让你可以放心地用 root 账户从远程登录——那就是通过密钥方式登录。

密钥形式登录的原理是:利用密钥生成器制作一对密钥——一只公钥和一只私钥。将公钥添加到服务器的某个账户上,然后在客户端利用私钥即可完成认证并登录。这样一来,没有私钥,任何人都无法通过 SSH 暴力破解你的密码来远程登录到系统。此外,如果将公钥复制到其他账户甚至主机,利用私钥也可以登录。

img

1. 制作密钥对

首先在客户端上制作密钥对。

1
ssh-keygen -t rsa

一路确认即可。

1
2
3
4
5
6
Generating public/private rsa key pair.
Enter file in which to save the key (~/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in ~/.ssh/id_rsa.
Your public key has been saved in ~/.ssh/id_rsa.pub.

2.发送密钥文件

将密钥公钥文件发送给远端的主机。

1
ssh-copy-id baixf@192.168.3.9
1
2
3
4
5
6
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "~/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Number of key(s) added: 1
Now try logging into the machine, with: "ssh 'baixf@192.168.3.9'"
and check to make sure that only the key(s) you wanted were added.

3.配置软件

  • Xshell

右键“属性” —> “用户身份验证” —> 勾选 “Public Key” 并”设置” —> “用户密钥“ —> ”浏览“ —> “导入”或”生成”

  • Termius

设置 —> “Keychain” —> NEW —> “Import or Paste a Key” —> “Import from key file”

  • Vscode

远程服务器 —> 配置ssh config文件 —> 添加IdentityFile C:\Users\baixf\.ssh\id_rsa

1
2
3
4
5
Host baixf
HostName 192.168.3.9
User baixf
Port 22
IdentityFile C:\Users\baixf\.ssh\id_rsa

4.使用服务器端公钥私钥

以上方法为使用客户端的公钥私钥进行免密登录,但是在查阅资料时还看到一种通过服务器端公钥去实现免密登录的,原理应该一样,都是将公钥(锁)放在服务端,利用私钥(钥匙)去认证。

设置 SSH 通过密钥登录

5.总结

  • 多个钥匙开一把锁
    • 把id_dsa.pub 复制给各个服务器
  • 一个钥匙开duobasuo
    • 把id_dsa 传给各个服务器
    • 把id_dsa 传给自己

参考


设置 SSH 通过密钥登录
https://blog.baixf.tk/2022/09/18/software/设置 SSH 通过密钥登录/
作者
白小飞
发布于
2022年9月18日
许可协议