0. 环境
- Win10
- CentOS7
- Windows Terminal
1. 生成 SSH 秘钥
ssh-keygen -t rsa
中途需要输入的选项,直接默认值回车即可。我的因为使用 GitHub 原本生成了一个,直接使用即可。
默认在用户目录/.ssh
目录下,如下:
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2018/7/16 18:25 1675 id_rsa
-a---- 2018/7/16 18:25 394 id_rsa.pub
-a---- 2020/5/9 9:50 3328 known_hosts
2. CentOS 配置
检查服务器是否有以下目录和文件,如果没有就创建
mkdir ~/.ssh
touch ~/.ssh/authorized_keys
上传刚才 Win10 生成的公钥文件到 CentOS 并追加内容到 authorized_keys
scp .\id_rsa.pub souco@192.168.0.2:~/
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
rm ~/id_rsa.pub
3. 重启 ssh 服务
systemctl restart sshd
完事儿。
4. 坑
完事儿是假的,日常填坑环节。
问题:退出重新连接 ssh,发现还是需要密码验证。
解决:检查目录和文件权限,确保 .ssh 目录权限为700,authorized_keys 文件权限为600
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
配置完重启 ssh 服务重新登录即可。