![当“手动”命令正常工作时,fstab 连接中的 sshfs 会通过 ~/.ssh/conf 中的 ssh 隧道重置](https://linux22.com/image/162484/%E5%BD%93%E2%80%9C%E6%89%8B%E5%8A%A8%E2%80%9D%E5%91%BD%E4%BB%A4%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C%E6%97%B6%EF%BC%8Cfstab%20%E8%BF%9E%E6%8E%A5%E4%B8%AD%E7%9A%84%20sshfs%20%E4%BC%9A%E9%80%9A%E8%BF%87%20~%2F.ssh%2Fconf%20%E4%B8%AD%E7%9A%84%20ssh%20%E9%9A%A7%E9%81%93%E9%87%8D%E7%BD%AE.png)
我正在尝试在 fstab 中设置 sshfs 挂载,以持久挂载必须通过 ssh 隧道访问的网络目录。
我的.ssh/config
样子是这样的:
Host A
Hostname outer.server
User <user>
IdentityFile /home/<user>/.ssh/id_rsa
ForwardAgent yes
Host B
Hostname inner.server
User <user>
IdentityFile /home/<user>/.ssh/id_rsa
ProxyCommand ssh -q A "nc %h %p"
ForwardAgent yes
这工作正常:
sshfs B:/home/<user>/ /mnt/B
在 fstab 中这不会
sshfs#B:/home/<user>/ /mnt/B fuse.sshfs defaults,idmap=user,allow_other,reconnect,_netdev,users 0 0
并且,mount -a
更新后运行whenfstab
以使更改生效返回:
read: Connection reset by peer
我欢迎任何关于为什么 fstab 版本可能无法工作的建议。
答案1
root 看不到您的每用户 ssh 配置文件。您需要将其放置在根主目录 ( /root/
) 中或放置在 中的系统范围配置文件中/etc/ssh/ssh_config
,假设身份验证密钥未加密(没有密码)。
您还可以通过扔掉 netcat 并直接在 SSH 中使用 -W 开关进行 IO 转发来省去很多麻烦,或者如果您有足够新的 OpenSSH,则可以仅使用 ProxyJump 选项(有关详细信息,请参阅手册)。
并且还删除ForwardAgent yes
.您不需要它做任何事情,它只是将您的私钥暴露给服务器。