如何添加指定SSH公钥到服务器实现用户访问及测试用户user1的配置疑问
看起来你在配置SSH公钥登录的时候搞混了几个关键点,我来一步步帮你理清楚:
首先,先纠正你写错的命令——应该是ssh-copy-id而不是ip-copy-id,这个小失误可能让你之前的操作没达到预期。
接下来,核心问题:公钥是要放到你想要登录的目标用户的目录下,而不是root的目录里。你现在想让user1能通过SSH公钥登录服务器,那公钥应该存到user1的~/.ssh/authorized_keys文件里,而不是root的/authorized_keys(哦对了,root的公钥目录应该是/root/.ssh/authorized_keys,你写的路径也不对)。
正确的配置步骤(针对测试用户user1):
生成公钥(如果还没在客户端生成的话)
如果你是在本地客户端操作,先生成密钥对:ssh-keygen -t rsa一路回车默认配置就行,生成的公钥在
~/.ssh/id_rsa.pub。把公钥复制到服务器的user1账户下
在客户端执行这个命令,会自动帮你创建user1的.ssh目录并把公钥写入authorized_keys:ssh-copy-id user1@你的服务器IP执行的时候会要求你输入
user1的密码,输入后就完成复制了。检查并修复权限(非常重要!)
SSH对权限要求很严格,权限太宽会直接拒绝登录。登录到服务器,切换到user1账户,执行:chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys确保
.ssh目录是700(只有自己能读写执行),authorized_keys是600(只有自己能读写)。确认sshd_config的关键配置
你已经改了sshd_config只允许SSH访问,再检查这几个配置项是否正确:PubkeyAuthentication yes # 开启公钥认证 PasswordAuthentication no # 禁用密码登录(如果需要的话) AuthorizedKeysFile .ssh/authorized_keys # 指定公钥文件路径,默认就是这个,不用改改完后重启SSH服务:
# 系统d的发行版(比如Ubuntu 16.0+/CentOS 7+) systemctl restart sshd # 老版本用service service ssh restart
回答你的疑问:“do I need to add something to my user1 directories?”
当然需要!就是上面说的,把公钥放到user1自己的~/.ssh/authorized_keys里,并且设置正确的权限。之前你把公钥放到root的目录里,那是给root用户配置公钥登录用的,和user1没关系。
测试登录
现在从客户端执行:
ssh user1@你的服务器IP
如果不用输入密码就能登录,说明配置成功了。
备注:内容来源于stack exchange,提问作者jsnjdhs

