用 Sshfs 远程挂载其他服务器上的 Ssl 证书
前言
前段时间,在家里树莓派上搭建的家庭影音服务器 Jellyfin 的 SSL 安全证书到期了,三个月过得好快
我的 SSL 证书申请程序,安装在 A 机器上 但是 nginx 和 Jellyfin 安装在 B 机器上
每次证书更新,都需要手动复制证书文件,从 A 到 B 机器上 是不是有点太呆瓜了?
那就试试远程挂载的方式吧
SSHFS 是一个基于 SSH 协议的网络文件系统客户端,它允许用户通过 SSH 协议安全地挂载远程文件系统到本地机器上。这种挂载方式不仅保证了数据传输的安全性,而且操作起来也非常方便。SSHFS 使用 FUSE(Filesystem in Userspace)技术,使得非特权用户也能够在用户空间创建自己的文件系统而无需 root 权限。这使得 SSHFS 成为了一个在远程开发、文件同步等场景下非常实用的工具。
环境
机器都在同一个局域网,都能获取到 ipv6 的外网地址
- A 主机:root 用户,安装有 SSL 证书申请程序,每三个月更新证书
- B 主机:普通用户,安装有 Nginx 和 Jellyfin 影音程序
我需要做的是,让 B 主机挂载 A 主机上, SSL 证书申请程序,放置证书文件的目录,目录如下
|
|
配置步骤
安装 sshfs
我的树莓派是 Debain 系统(Ubuntu 下面的命令通用),运行如下命令安装即可
对于 CentOS/RHEL 系统:
|
|
对于 Fedora 系统:
|
|
B 主机配置免密登录 A 主机
为了方便使用 SSHFS,建议配置 SSH 无密码登录到远程服务器。这一步会生成一个 SSH 密钥对,并将公钥复制到远程服务器的 ~/.ssh/authorized_keys
文件中。
替换 user
和 remote_host
为你的远程服务器的用户名和地址。完成这一步,就可以开始挂载 A 主机的证书目录了
B 主机运行挂载命令
在运行之前,还需要修改一下 /etc/fuse.conf
文件
这是因为,我的 B 主机挂载外置硬盘的用户是普通用户, 外置硬盘是 用普通用户挂载 的,我 不想改它的属主(owner)或权限,但又想 由 root 用 sshfs 挂载一个远程目录到外置硬盘下的一个子目录(
/mnt/ExtendDisk/Configs/Jellyfin/key
)
|
|
将文件中的 user_allow_other
参数取消注释
完成上面的 fuse
配置后,运行下面的命令
|
|
检查一下
|
|
ok,A 主机的文件成功挂载到 B 主机的 /mnt/ExtendDisk/Configs/Jellyfin/key/
目录下了
B 主机配置自动挂载
上面的命令在关机重启以后,就会失效,所以我们还需要配置一下 /etc/fstab
说明:
_netdev
: 延迟挂载直到网络就绪;allow_other
: 让 Jellyfin 等非 root 服务有权访问;
ok,可以不用操心证书的过期问题了