【问题标题】:Why do double quotes break the ssh statement? [closed]为什么双引号会破坏 ssh 语句? [关闭]
【发布时间】:2015-09-04 02:18:09
【问题描述】:

我正在尝试通过 ssh 连接到我的亚马逊服务器。我有两种方法,一种有效,一种无效,我不确定为什么第二种无效。

第一种方式:

ssh -i path-to-pem-file username@public-ip

这行得通。

第二种方式:

ssh -i "path-to-pem-file" username@public-ip

这会导致“警告:无法访问身份文件“path-to-pem-file””。

以上两个命令都是从 Mac OSX 上的终端运行的。为什么双引号会破坏语句?谢谢。

【问题讨论】:

  • 您是否偶然将~ 用作您的主目录?例如ssh -i "~/keys/pemkey" derp@wherever
  • 显示实际路径会很有用,虽然我怀疑 phpisuber01 是对的。

标签: macos bash ssh double-quotes


【解决方案1】:

如果您使用 shell 扩展或其他 special characters,则引用时不会解释它们的特殊含义。它们被视为文字值。

您可以使用~$HOME 的特殊字符来复制它

不起作用

ssh -i "~/mypemkey.pem" ec2-user@somehost

作品

ssh -i ~/mypemkey.pem ec2-user@somehost

本质上,ssh 应用程序在展开时会尝试查找文字文件路径 ~/ 而不是 /Users/someuser/

想看看它在幕后的实际效果......测试它!

创建一个简单的 bash 脚本

echo "echo \$1" > test.sh

执行它

/bin/bash test.sh ~/Desktop
    outputs: /Users/phpisuber01/Desktop

/bin/bash test.sh "~/Desktop"
    outputs: ~/Desktop

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 2014-11-25
    • 2019-12-11
    • 1970-01-01
    相关资源
    最近更新 更多