我希望能够仅使用客户端上的密钥按需安装备份服务器,因为我不会将 SSH 密钥留在我管理的服务器上。SSHFS 是否支持 ssh-gent 转发以及如何支持?
在文档中没有找到答案。
提前致谢!
答案1
可以针对每个用例临时执行此操作,方法是使用-E
手册页
例如,如果你是host
client: $ ssh -A user@host
user@host: $ sudo -E sshfs -o allow_other user@host2:/ /mnt
这会将您的代理连接从client
转发host
到host2
。sudo
允许在执行时保留环境sshfs
答案2
是的,它支持。您只需要启用代理转发。SSHFS 对它是透明的,如果它适用于您的系统,那么它也适用于 SSHFS。
证明如下:
[root@novaprime ~]# ssh -A hercules Last login: Tue Jan 22 23:46:47 2019 from gateway [root@hercules ~]# sshfs -o allow_other [email protected]:/ /mnt [root@hercules ~]# df -Ph /mnt Filesystem Size Used Avail Use% Mounted on
[email protected]:/ 49G 9.0G 40G 19% /mnt [root@hercules ~]#
答案3
好的,问题解决了。问题是我以 root 身份sshfs
通过 执行了命令sudo
,所以我的用户环境(SSH_* 变量)无法被 root 访问,因此我将用户 SSH 环境变量添加到sudoers
文件中:
Defaults env_reset
Defaults env_keep += "EDITOR BORG_REPO BORG_PASSPHRASE BORG_RSH VISUAL SHELL LSCOLORS LS_COLORS LESS LESSCHARSET LESSEDIT LANG SSH_AUTH_SOCK SS
H_CLIENT SSH_CONNECTION SSH_TTY"
再次登录并以 root 身份运行 sshfs 后,我的密钥被正确转发到服务器。
不确定这是否是世界上最安全的事情,但我愿意接受建议以妥善解决这个问题。