第一步,在客户端生成密钥对(windows或linux均可):

ssh-keygen

之后一路回车,默认不设密码,默认目录为 ~/.ssh

生成id_rsa和id_rsa.pub,前者是私钥,后者是公钥

第二步,部署公钥至服务器端(Linux),并赋权限

先把id_rsa.pub拷贝到服务器上,此时只能通过密码进行登录。把remote_username和remote_ip换成自己远程服务器的用户名和IP。

C:\Users\Administrator\.ssh>scp id_rsa.pub remote_username@remote_ip:~/.ssh

使用密码登录远程服务器,将id_rsa.pub加入公钥验证检测文件

cat id_rsa.pub >> authorized_keys
  • 将 id_rsa.pub 替换为你的公钥路径即可,如果是在本地生成需上传至服务器端。

  • 这项操作可以部署多个公钥,命令会在 authorized_keys 后面追加,而 Linux 公钥验证检测 authorized_keys 文件中的公钥

  • 一个萝卜一个坑,一个公钥只运行一个用户使用登录

第三步,检查密钥登陆功能是否开启

1、打开SSH配置文件

sudo vim /etc/ssh/sshd_config

2、查看确认下面配置,可以直接复制到sshd_config的最后。

PubkeyAuthentication yes
  • 当你完成全部设置,并以密钥方式登录成功后,再禁用密码登录(可选)

PasswordAuthentication no

3、重启SSH

sudo service sshd restart

第四步,检查本地私钥部署

如果客户端为windows,您的私钥应存在于 C:\Users\your name\.ssh\ 目录下,在该目录下选择id_rsa,或是在登陆时指定私钥:

$ ssh -i id_rsa remote-username@remote-ip

如果是使用 VS Code 远程连接则需要在配置中指定私钥地址:

Host Ali-Dev-Test
  HostName *.*.*.*
  User root
  IdentityFile "C:\Users\your name\.ssh\id_rsa"

第五步,enjoy it!

参考文献