【问题标题】:Why -f flag of ssh-keygen fails to follow symlink?为什么 ssh-keygen 的 -f 标志无法遵循符号链接?
【发布时间】:2020-07-26 19:34:15
【问题描述】:

我的~/.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?

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

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}) 等等。

【问题讨论】:

    标签: bash ssh environment-variables zsh ssh-keygen


    【解决方案1】:

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

    试试

    export SSHKey_Path=~/.ssh/Official/demo
    

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

    【讨论】:

    • 是的,我也尝试过这些。只要 -f 中有变量,它就不起作用。
    • 我已经对我的问题进行了进一步调查。原来问题实际上与符号链接有关。我已经更新了问题。
    • 当你尝试了我给出的两个解决方案时,你得到了什么错误信息?
    猜你喜欢
    • 1970-01-01
    • 2022-01-14
    • 2020-12-17
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    • 2015-11-06
    • 2012-09-19
    • 1970-01-01
    相关资源
    最近更新 更多