最近给几台机器设置 ssh 公钥登陆的时候发现老是失败,putty 和 ssh 命令都显示认证被拒绝。今天想搞一个 git server,又碰到这个问题了,想着还是得解决一下才行。

一开始想换个环境于是在虚拟机里先做个测试,果然也出现了无法登录的情况。。。查看 /var/log/secure 日志,可以发现有下面这样的信息:
Authentication refused: bad ownership or modes for file /home/testuser/.ssh/authorized_keys
上网查了一下,发现是 ssh 对文件以及目录的权限有要求,随意设置会导致 ssh 不认这个文件。同时又想起使用 ssh 命令登录时有时会提示你私钥权限过大而忽略这个私钥

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0555 for 'id_rsa' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: id_rsa

因此问题的原因应该就是这个了。

接下来调整目录权限。
用户目录权限为 755 或者 700,不能是777之类的。
.ssh目录权限可以是 700 或 755。
rsa_id.pub 和 authorized_keys 设置为 644。
rsa_id 权限设为 600。

设置完成后就可以顺利连接了。

使用 putty 连接

在初始的 Session 界面填上 ip 和端口后,切换到 Connection-Data,把 Auto-login username 改为要登录的用户,再切换到 Connection-SSH-Auth,将 putty 的 ppk 私钥路径填入,最后记得保存该连接,这样就能免除输入密码的麻烦了。

最后补充两个,git 输入路径时要带上 ssh:// 前缀。。。一开始看 gayhub 的路径是没有前缀的就没输,然后老是报没权限什么的,害死人啊。。。
还有一个就是新创建 git 仓库目录所有权别忘了转移给相应的用户。。
整个东西搞下来足足花了一个晚上_(┐「ε:)_看看教程基本都是没问题的,然而要是某一步卡住了,估计 90% 的时间都花在这上面了。