​welcome to my blog​

只需两步

一.在本地机器生成秘钥

执行 ssh-keygen -t rsa -C "Hinata" 一路回车即可
-t 指定加密算法
-C 说明性文字, 习惯上写自己的邮箱

二. 自动将公钥id_rsa.pub传输到服务器上

执行 ssh-copy-id -i ~/.ssh/id_rsa.pub 服务器用户名@服务器ip地址
-i 指定本地的公钥文件地址
会自动将本地的公钥id_rsa.pub传入到服务器的~/.ssh/authorized_keys中

也可以手动复制公钥到服务器

windows命令行没有ssh-copy-id命令, 可以手动复制

(1)在家目录下创建.ssh文件夹
mkdir .ssh
(2)修改.ssh权限
chmod 700 .ssh
(3)进入.ssh, 创建authorized_keys文件, 并把公钥内容粘贴到文件中并保存
cd .ssh
vim authorized_keys
(4)修改authorized_keys权限
chmod 600 authorized_keys

现在就可以免密登录了

我最开始犯了个愚蠢的错误

我用的是windows, 使用命令行生成了公钥, 我用windows 商店中的ubuntu18.04去登录远程服务器的, 怎么改服务器的.ssh和authorized_keys都不能实现免密登录, 直到使用ssh -v 用户名@IP地址登录发现ssh读取公钥的地址并不是windows上的地址, 而是ubuntu18.04中的, 这才惊醒, 需要把ubuntu18.04的公钥复制粘贴到服务器的authorized_keys中, 不是windows的公钥!