为什么 ssh-keygen 的 -f 标志无法遵循符号链接?

Why -f flag of ssh-keygen fails to follow symlink?

我的 ~/.ssh 目录是指向 /somewhere/else/.ssh/

的符号链接

现在,下面的工作完美了;并且 demo 密钥最终在 /somewhere/else/.ssh/Official 处创建,正如预期的那样。

export NewUser="Sam"
ssh-keygen -N "" -t rsa -b 8192 -C "Login Key of ${NewUser}." -f ~/.ssh/Official/demo

然而,当 -f 通过变量提供相同的路径时,它会失败并出现以下错误: Saving key "~/.ssh/Official/demo" failed: No such file or directory

export NewUser="Darsh"
export SSHKey_Path="~/.ssh/Official/demo"
ssh-keygen -N "" -t rsa -b 8192 -C "Login Key of ${NewUser}." -f ${SSHKey_Path}

我尝试了几种方法来提供这个变量,但都没有用。我也无法在文档中找到有关变量的任何信息。 我想知道为什么 -f 只有在通过变量传递时才无法遵循符号链接路径?有解决方法吗? 我不确定,但是,是否建议将其引起注意 here



编辑:调试后更新问题。原题已保存如下:

我知道 ssh-keygen 有一个标志 -f 来指定 input_keyfile - 使用它,一次可以在自定义位置创建一个具有自定义名称的密钥。但是,如果 input_keyfile 是一个变量,这将失败。
如何将密钥路径作为变量提供给 ssh-keygen?

以下是来自较大代码的过度简化的片段:
这非常有效:

export NewUser="Sam"
ssh-keygen -N "" -t rsa -b 8192 -C "Login Key of ${NewUser}." -f ~/.ssh/Official/demo

然而,这失败并出现以下错误保存密钥“~/.ssh/Official/demo”失败:没有这样的文件或目录

export NewUser="Darsh"
export SSHKey_Path="~/.ssh/Official/demo"
ssh-keygen -N "" -t rsa -b 8192 -C "Login Key of ${NewUser}." -f ${SSHKey_Path}

我试过用几种方法包装 ${SSHKey_Path},但没有任何效果:
"'$(echo ${SSHKey_Path}) 等等。

失败不在变量中,而是在~的解释中。

尝试

export SSHKey_Path=~/.ssh/Official/demo

export SSHKey_Path="$HOME/.ssh/Official/demo"