设置 SSH 通过密钥登录

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

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

img

1. 制作密钥对

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

ssh-keygen -t rsa

一路确认即可。

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.发送密钥文件

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

ssh-copy-id baixf@192.168.3.9
/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

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 传给自己

参考

posted @ 2022-10-10 21:56  baixf白小飞  阅读(301)  评论(0编辑  收藏  举报