我们不能失去信仰

我们在这个世界上不停地奔跑...

0%

群晖ssh免密登录问题.md

群晖SSH免密登录

在这里分享一下群晖开启ssh后,把公钥传输到机器上面,然后依旧无法免密登录的解决方法。

我的情况是这样的,很奇怪,在 iterm 中即使已经把公钥上传到群晖的家目录中的 .ssh 文件夹中了,但是还是会让我输入密码。然后如果此时保持有一个窗口已经登录服务器,第二个窗口就可以直接登录,不需要输入密码。这里并没有深究是iterm自带的功能,还是群晖服务器的问题。 反正第一次无法正常免密登录,那肯定可以判断是群晖的问题。

SSH 调试方法

  1. 在服务器上面开一个一次性的临时的ssh服务,这个服务职能被连接一次。端口随便设置个端口,不要与其他端口冲突就行,-d 开启debug 模式。

    which sshd 使用这个命令先查看 sshd 的绝对路径,我的是 /bin/sshd

    sudo /bin/sshd -p 2234 我的ssh端口是2233, 所以我开一个临时的,没有被占用的端口就随便选了 2234 。 我这里是有公网ip的,然后通过 ddns ,然后设置端口转发,最后使用域名来代替 ip 来连接。关于端口转发,及公网ip、ddns 不在叙述。

  2. 通过第一步开启临时服务后,在本机新打开一个终端,通过 ssh -vvv -p 2234 xxx.xxx.com 来进行连接。

  3. 然后观察服务器打印出来的日志,我这里发现这个错误:

    1
    2
    ssh receive packet: type 51
    Authentication refused: bad ownership or modes for directory

    直接查看日志是否有否定的词语,就可以知道大概是哪里有问题了。

  4. 然后发生这个问题主要是因为目录权限设置的问题。我这里改了下权限设置就可以了。

    sshd 为了安全,对属主目录和文件权限有所要求,如果权限不对,则ssh的免密登录不生效。

    用户目录权限为 775 或者 700,不能是77x。

    修改命令: chmod 700 /homes/myhome (myhome为你的目录名)

    .ssh 目录权限一般为 755 或者 700。

    修改命令: chmod 700 /homes/myhome/.ssh

    rse_id.pub 和 authorized_keys 权限一般为 644,我这里没放rse_id.pub,这放了一个authorized_keys,公钥放在 authorized_keys 里面,所以只需要修改这个文件就行了。

    chmod 644 /homes/myhome/.ssh/authorized_keys

    如果你的服务器上面有私钥文件,最好也修改一下,没有的话就不用了。私钥文件权限必须为600

    chmod 600 rsa_id

最后再说一个 rsync

如果开启免密后,需要使用 rsync 来进行同步操作,请先把群晖的 rsync 服务开启。

在控制面板—> 文件服务–> rsync —> 启用 rsync服务,然后应用就可以了。

参考ssh调试、sshd调试

参考 ssh免密登录设置

过了一天更新

昨天设置完成了 ssh 免密登录,配合使用 rsync 传输博客静态文件很爽。 但是晚上却发现 moments 里面的照片全部显示不出来的,不仅缩略图不显示,就算点进去也不显示。我下载下来,发现图片是完好的。 几经周折发现是因为 我安装 moments 的这个账户目录必须有 everyone 群组权限,我加上 everyone 群组权限后,moments 正常了。 但是 ssh 又无法免密登录了,因为加上 everyone 群组后, 家目录就变成 777 权限了。

为了解决这个问题,并且处于安全考虑, 创建一个新的用户,专门用来存放博客文件。

并且密码设置成随机密码,这样只能通过 公私钥进行登录,这样安全性就提高了很多,并且也不需要为因为其他软件权限问题而考虑。