首先作为踩坑记录mark一下:
背景:布署了一台云服务器debian10, 在本地ubuntu16.04上面用user-a用户更新SSH证书,并希望将新的证书上传到云服务器debian10上面,实现SSH证书登录。由于中间有一些操作导致需要重装debian10,中间穿插用了一些root操作,后面重装后的debian10不能上传ssh证书了,搞了好一阵子,还没有成功,就有点急了。
最后决定全部重新走一遍看看到底是啥问题,最终完成,个人认为需要关注owner,group,这两种属性,如果命令不行,就人为干预。
(1)user-a用户生成证书:
ssh-keygen -t ras -b 4096
(2)结果:
user-a@local-linux:~/.ssh$ ls
id_rsa id_rsa.pub known_hosts
生成的文件其中owner与group可能有的机器会是与root相关,所以会在使用ssh-copy-id时报权限问题,我的作法是直接全部改回为user-a(owner与group)
(3)改证书权限(应该是非必要的):
sudo chown -R user-a user-a (前面一个user-a是用户名,后面一个user-a是用户文件夹名)
sudo chgrp -R user-a user-a (前面一个user-a是用户名,后面一个user-a是用户文件夹名)
(4)然后在云服务器debian10上面,添加新的非root用户user-a 添加用户,应该也会生成用户目录,我实际操作时没有生成,但是前面的几次是生成了的,所以目前还没有确认具体问题;
debian10:~$useradd -G sudo -m user-a -s /bin/bash
debian10:~$passwd user-a
(5)关于没有生成用户目录,我直接用户创建,然后递归改owner与group到user-a
(6)然后在本地ubuntu16.04上面用user-a用户上传ssh证书
ssh-copy-id user-a@123.345.22.11
此处应该会询问user-a在云服务器debain10上面的passwd, 输入之后应该就会登录进debian10了。
如果还是有问题,建议把本地的干掉
rm -rf ~/.ssh/*
然后重新走一遍ssh证书生成, 就这几招试试。