SSH公钥在服务器上的标准存放目录是用户家目录下的~/.ssh/authorized_keys文件,这是OpenSSH服务默认读取的认证文件路径。无论你是管理自己的云服务器还是配置公司内网机器,只要把公钥内容追加到这个文件并设置好权限,就能实现免密登录,这篇文章会把这个目录的来龙去脉、权限坑位和实操命令一次说清楚。
ssh公钥服务器哪个目录?标准路径与文件作用
很多刚接触Linux的朋友在配置免密登录时,最常问的就是“公钥到底该放哪”,答案其实很明确:对于OpenSSH服务,公钥放在目标服务器上你想要登录的那个用户的~/.ssh/authorized_keys文件里,这里的代表该用户的家目录,比如root用户就是/root/.ssh/authorized_keys,普通用户ubuntu就是/home/ubuntu/.ssh/authorized_keys。
绝对路径与相对路径的区别
- 相对路径:
~/.ssh/authorized_keys,适合在切换用户后使用。 - 绝对路径:
/home/用户名/.ssh/authorized_keys,适合在写脚本或配置工具时明确指定。
在绝大多数Linux发行版(CentOS、Ubuntu、Debian)中,这个路径是硬编码在/etc/ssh/sshd_config里的,对应参数为AuthorizedKeysFile .ssh/authorized_keys,如果你没有手动改过这个配置,那么默认就是上述目录。
不同用户下的公钥存放位置
root用户:/root/.ssh/authorized_keys- 普通用户
zhangsan:/home/zhangsan/.ssh/authorized_keys - 使用
sudo切换用户后,路径会随之变化,这一点在写自动化脚本时尤其容易踩坑。
行业共识认为,每个用户独立管理自己的公钥文件

是最安全的做法,不要把所有人的公钥都塞到root的authorized_keys里,否则一旦某个人的私钥泄露,整个服务器的最高权限就拱手让人了。
酷番云服务器ssh公钥配置路径与本地密钥生成
如果你刚在酷番云、简米云或华为云买了一台新服务器,第一件事应该是生成密钥对而不是设密码登录,本地生成公钥的命令是:
ssh-keygen -t rsa -b 4096 -C "你的邮箱或备注"
执行后,公钥会生成在本地~/.ssh/id_rsa.pub,私钥是~/.ssh/id_rsa。私钥永远不要传给任何服务器,它只留在本地电脑或密码管理器里,服务器上需要的是公钥内容。
使用ssh-copy-id一键上传公钥
最简单的做法是使用ssh-copy-id工具,它会自动把本地公钥追加到服务器的正确目录:
ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@服务器IP
这个命令会要求你输入一次服务器密码,之后就把公钥内容追加到了~/.ssh/authorized_keys末尾,并自动设置好目录和文件权限,如果你的系统没装这个命令,用apt install openssh-client或yum install openssh-clients即可。
手动创建authorized_keys的完整步骤
有些特殊场景(比如服务器只开密钥登录,你只能用VNC控制台)下需要手动操作,步骤如下:
- 登录服务器,切换到目标用户:
su - 用户名 - 创建
.ssh目录:mkdir -p ~/.ssh - 设置目录权限为700:
chmod 700 ~/.ssh - 创建
authorized_keys文件:touch ~/.ssh/authorized_keys - 设置文件权限为600:
chmod 600 ~/.ssh/authorized_keys
- 将本地公钥内容粘贴进去:
echo "ssh-rsa AAAAB3NzaC1yc2E..." >> ~/.ssh/authorized_keys
注意这里用的是>>追加而非>覆盖,否则会清掉之前已有的公钥,如果公钥中有空格或特殊字符,一定要用双引号包裹整段内容。
ssh公钥配置权限问题与私钥混淆场景
很多用户明明把公钥放对了目录,却登录失败,原因十有八九是权限太开放。SSH对权限非常敏感,目录或文件如果允许其他用户写入,服务端会直接忽略这个公钥。
权限设置不当导致的登录失败
- 家目录权限不能是
777,建议755或700 .ssh目录权限必须是700authorized_keys文件权限必须是600或644,但不能是666
检查权限的命令:
ls -ld ~ ~/.ssh ~/.ssh/authorized_keys
如果发现权限不对,立即修复:
chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys
ssh公钥和私钥有什么区别?别搞反了
- 公钥(
.pub:可以公开,放在服务器上,相当于锁。 - 私钥(无后缀):必须保密,留在本地,相当于钥匙。
业内专家指出,把私钥当作公钥上传是新手最常见的错误,如果你在authorized_keys里看到的是-----BEGIN RSA PRIVATE KEY-----开头的私钥内容,SSH服务会直接报错Permission denied (publickey)。
多密钥管理与authorized_keys文件格式
当你有多个设备(公司电脑、个人笔记本、手机)需要登录同一台服务器时,可以把每个设备的公钥都追加到

authorized_keys文件里,每行一个公钥,不要合并成一行。
多密钥文件如何切换
本地多个密钥对时,通过ssh -i ~/.ssh/某把私钥 用户名@服务器IP指定私钥,或者编辑~/.ssh/config配置文件,为不同服务器指定不同密钥:
Host myserver
HostName 192.168.1.100
User root
IdentityFile ~/.ssh/company_rsa
格式与注释规范
每行公钥的格式为:ssh-rsa AAAA... 注释,注释部分一般写设备名或邮箱,方便日后识别,如果你要移除某台设备的访问权,直接删除对应行即可。
Q&A:ssh公钥服务器哪个目录?常见疑问解答
问:我把公钥放到了/etc/ssh/authorized_keys,为什么登录失败?
答:/etc/ssh/目录是SSH服务配置和主机密钥的存放位置,不是用户公钥目录,除非你在sshd_config里把AuthorizedKeysFile改成绝对路径,否则系统不会读取这个位置,正确路径是用户家目录下的~/.ssh/authorized_keys。
问:Windows服务器也能用这个目录吗?
答:Windows OpenSSH服务的公钥存放路径略有不同,通常在C:Users用户名.sshauthorized_keys,如果是Linux服务器上的WSL环境,则遵循Linux路径规则,但大多数生产服务器是Linux系统,所以~/.ssh/authorized_keys是通用答案。
问:服务器上有多个人需要登录,能否共用一个authorized_keys文件?
答:可以,但强烈不建议,正确的做法是每个用户单独维护自己的~/.ssh/authorized_keys文件,登录时通过ssh 用户名@IP指定身份,共用一个文件会导致权限边界模糊,且无法单独审计谁用了哪把密钥。
图片来源于AI模型,如侵权请联系管理员。作者:酷小编,如若转载,请注明出处:https://www.kufanyun.com/ask/753226.html

