SSH在终端中工作,但在shell脚本中也不起作用

TER*_*ytE 2 linux ssh shell amazon-ec2 amazon-web-services

我正在尝试执行上传到AWS实例的脚本.如果我在MacBook终端中运行以下命令,则成功:

ssh -o StrictHostKeyChecking=no -i ~/.ec2/my.pem ec2-user@ec2-<address>.amazonaws.com "chmod u+x ./myScript.sh"
Run Code Online (Sandbox Code Playgroud)

我将相同的命令移植到本地计算机上的简单shell脚本,在那里我传递信息:

#!/bin/sh
# myLocalScript.sh

host=$1
pem=$2
fileName=$3

ssh -o StrictHostKeyChecking=no -i $pemkey ec2-user@$host "chmod u+x ./$fileName"
Run Code Online (Sandbox Code Playgroud)

当我使用此命令运行它时:

sh myLocalScript.sh ec2-user@ec2-<address>.amazonaws.com ~/.ec2/my.pem myScript.sh
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Warning: Identity file ec2-user@ec2-<address>.amazonaws.com not accessible: No such file or directory.
ssh: Could not resolve hostname chmod u+x ./myScript.sh: nodename nor servname provided, or not known
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

tri*_*eee 5

你需要$pem$pemkey.

另外,你应该养成双引号变量的习惯,除非在非常特殊的情况下,你真的希望一个空变量"消失".