bash - 为什么 ssh-keygen 的 -f 标志无法遵循符号链接?
问题描述
我的~/.ssh
目录是一个符号链接/somewhere/else/.ssh/
现在,以下工作完美;正如预期的那样,演示密钥最终在 处创建。/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
只有通过变量传递才能遵循符号链接路径?有解决方法吗?我不确定,但是,是否建议在此处注意这一点?
编辑:调试后更新问题。原始问题已保留如下:
我知道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
但是,这会失败并显示以下错误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}
我尝试以多种方式包装 ${SSHKey_Path} ,但没有任何效果:
"
, '
,$(echo ${SSHKey_Path})
等等。
解决方案
失败不在于变量,而在于对~
.
尝试
export SSHKey_Path=~/.ssh/Official/demo
或者
export SSHKey_Path="$HOME/.ssh/Official/demo"
推荐阅读
- r - 将闪亮的数据表行作为参数传递给报表的按钮
- c++ - 使用宏扩展的泛型:为什么指令缓存使用不佳?
- javascript - 调用控制器,但不立即重定向到另一个视图
- python - Tkinter & Turtle Snake 游戏
- android - 使用协程在 api 请求之前从房间数据库加载数据
- r - 分组日期和时间
- amazon-web-services - AWS Elemental MediaConvert - 不同于 S3 的远程输入
- julia - 在 Julia 中使用基础数据对地图进行着色
- java - 正则表达式无法正常工作
- sql-server - 获取 SQL Server 的 CPU 和 RAM 使用数据 | C#