我有一个本地 unix 套接字,通过 SSH 隧道连接到远程实例上的另一个 unix 套接字:
ssh -N -L $HOME/my.sock:/var/run/another.sock
但是,当我优雅地终止 ssh (即 ctrl+C 或 SIGTERM)时,问题$HOME/my.sock
仍然存在。看来这个没有清理干净。有这个选项/标志吗?
这是有问题的,因为如果我第二次运行该命令,它会由于现有的套接字文件而失败。 (我也看不到会覆盖现有套接字文件的“重用”标志/选项。)而且我宁愿不添加rm -f $HOME/my.sock
.
答案1
简短的回答,您可以使用命令行标志来控制它:-o 'StreamLocalBindUnlink=yes'
长答案:参见 ssh_config(5):
StreamLocalBindUnlink
Specifies whether to remove an existing Unix-domain socket file for local or
remote port forwarding before creating a new one. If the socket file already
exists and StreamLocalBindUnlink is not enabled, ssh will be unable to forward
the port to the Unix-domain socket file. This option is only used for port for‐
warding to a Unix-domain socket file.
The argument must be yes or no (the default).