我正在尝试从本地计算机通过 SSH 连接到我的服务器。过去我不需要输入密码,因为我的公钥在服务器上authorized_keys
。但是,今天我认为某些文件的某些权限已更改,每次我尝试通过 SSH 连接时都会要求输入密码。
我本地机器/服务器上的 .ssh 文件夹及其内容的正确/默认权限是什么?
这是我当前的权限
我的服务器
[root@server9987 .ssh]# ls -la
total 24
drwx------ 2 root root 4096 Oct 17 03:29 .
drwxr-x--- 7 root root 4096 Oct 17 03:29 ..
-rw------- 1 root root 397 Oct 16 19:11 authorized_keys
-rw------- 1 root root 1675 Oct 12 02:10 id_rsa
-rw------- 1 root root 398 Oct 12 02:10 id_rsa.pub
-rwxrwxrwx 1 root root 830 Oct 17 03:29 known_hosts
我的本地机器
➜ .ssh l
total 32
drwx------ 6 Oliver staff 204 17 Oct 00:28 .
drwxr-xr-x 7 Oliver staff 238 16 Oct 17:28 ..
-rw------- 1 Oliver staff 332 16 Oct 17:28 config
-rw------- 1 Oliver staff 1766 13 Jul 11:13 id_rsa
-rw------- 1 Oliver staff 398 13 Jul 11:13 id_rsa.pub
-rw------- 1 Oliver staff 3312 17 Oct 00:28 known_hosts
答案1
您希望私钥仅由所有者可读。通常,最好使该文件夹中的所有内容仅由所有者可读可写。但是,允许其他人通过密钥登录的文件必须由运行 ssh 守护程序的用户可读。
一般来说:
find ~/.ssh -type f -exec chmod 600 {} \;
chmod 755 ~/.ssh
chmod 644 ~/.ssh/authorized_keys
更新 ~/.ssh 文件夹的默认权限为 700(openssh 5.9,gentoo)和一些文件:
$ ll .ssh; ll -d .ssh
-rw-r--r-- 1 jaroslav jaroslav 406 Oct 17 04:32 known_hosts
drwx------ 2 jaroslav jaroslav 4096 Oct 17 04:32 .ssh
-rw------- 1 jaroslav jaroslav 1766 Oct 17 04:37 id_rsa
-rw------- 1 jaroslav jaroslav 395 Oct 17 04:37 id_rsa.pub
这是在我移走原始 .ssh 并运行之后ssh 主机名.org;ssh-keygen。openssh 命令创建的文件似乎不受umask
所以我仍然是对的,并且评论/反对票与我的回答无关:'(。
.ssh 之所以可以是 700,是因为 sshd 主要由 root 运行,而 root 可以读取任何内容。sshd 主要由 root 运行,是因为守护进程需要监听特权端口 (<1024)。
答案2
找到答案在此主题中。这不是 SSH 文件/文件夹的权限,而是用户目录的权限。