我正在尝试在我的本地网络上设置一个私人 git 服务器,但我一生都无法弄清楚我做错了什么。我似乎无法通过 git 用户的私钥获得 ssh 身份验证。
我已经ssh-keygen
在客户端上运行来创建 rsa pub/私钥。我已经~/.ssh/authorized_keys
在服务器上创建了该文件。我已将文件的内容复制id_rsa.pub
到authorized_keys
服务器上的文件中,方法是scp
将文件传输到服务器,然后再传输cat id_rsa.pub > ~/.ssh/authorized_keys
到服务器上,以确保没有复制错误。我已经重新启动了 ssh 守护进程。
在客户端上,~/.ssh
文件夹的权限为700,~/.ssh/id_rsa
文件的权限为600。在服务器上,~/.ssh
文件夹的权限为700,~/.ssh/authorized_keys
文件的权限为600。
我的服务器的 ssh 配置/etc/ssh/sshd_config
有以下未注释的行
Include /etc/ssh/sshd_config.d/*.conf
KbdInteractiveAuthentication no
UsePAM yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
PasswordAuthentication yes
Match User git
PasswordAuthentication no
PubkeyAuthentication yes
该/etc/ssh/sshd_config.d/
文件夹是空的。服务器正在运行Ubuntu 22.04.1 LTS
。服务器的ssh版本是OpenSSH_8.9p1 Ubuntu-3ubuntu0.1, OpenSSL 3.0.2 15 Mar 2022
在尝试时,我受到以下欢迎ssh [email protected]
Permission denied (publickey).
我缺少什么?我看过指南。我已确保我准确地复制了密钥。老实说,我很困惑,因为我之前已经在已经设置了 ssh 的服务器上将公钥插入到文件中authorized_keys
,并且它有效。如果我将 sshd 配置设置为允许,PasswordAuthentication
那么我可以使用我设置的密码以 git 用户身份登录。我不明白为什么公共私钥身份验证不起作用。
输出ssh [email protected] -vvv
https://pastebin.com/raw/nJwskYhU
答案1
有一个错误,/var/log/auth.log
其中指出:
Authentication refused: bad ownership or modes for directory <home directory>
我所做的是将 git 用户的主目录移动到一个新位置,并且该文件夹的默认权限和所有权与标准权限和所有权不同。我认为这就是问题所在。将主目录移回修复问题的目录。感谢肯斯特的评论。我没想到要在服务器端查找日志。