第一步,在客户端生成密钥对(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"