Jos*_*hua 2 osx ssh shell-script
我正在经历一些奇怪的事情。我正在编写一个脚本,通过脚本在服务器上远程安装 Splunk。在这个脚本中,我通过 ssh 连接到我的练习服务器(运行 Redhat 的 5 个亚马逊 EC2 实例)。
但是,当我运行脚本时,出现此错误:
Warning: Identity file ~/Keypairs/jadam-macbookpro-ec2-1.pem not accessible: No such file or directory.
我的第一步显然是确保路径在那里。我复制命令 run 并将其粘贴到我的终端中。我使用密钥对成功连接到我的实例。
这是有问题的命令。我已经尝试过在命令前加上和不加上 sudo 前缀:
KEYPAIR="~/Keypairs/jadam-macbookpro-ec2-1.pem"
sudo ssh -i "$KEYPAIR" "$DST" "$REMOTE_SCRIPT"
Run Code Online (Sandbox Code Playgroud)
REMOTE_SCRIPT 是要运行的脚本文件,而 DST 是我从主机文件中提取的服务器地址。
解决的命令是:
ssh -i ~/Keypairs/jadam-macbookpro-ec2-1.pem ec2-user@12.3.4.567
Run Code Online (Sandbox Code Playgroud)
脚本失败,但复制命令并手动执行它是可行的。一开始我以为是权限问题,这就是我用sudo运行它的原因,但它认为该目录不存在。
有任何想法吗?
roa*_*ima 12
其实你解决的命令是不对的。真的是这样的:
ssh -i "~/Keypairs/jadam-macbookpro-ec2-1.pem" "ec2-user@12.3.4.567"
Run Code Online (Sandbox Code Playgroud)
双引号停止 shell 扩展~
,它在那里被视为文字(直接传递给ssh
)。将其替换为环境变量$HOME
,问题将自行解决:
KEYPAIR="$HOME/Keypairs/jadam-macbookpro-ec2-1.pem"
sudo ssh -i "$KEYPAIR" "$DST" "$REMOTE_SCRIPT"
Run Code Online (Sandbox Code Playgroud)
我应该指出,这ssh
将评估~
as home directory,但在这种情况下,它将在 root 的上下文中而不是您的上下文中执行此操作,因此不会在您的$HOME/.ssh
目录中查找文件。
归档时间: |
|
查看次数: |
6941 次 |
最近记录: |