ssh :用户和主机 / host_ip 作为变量

ssh :用户和主机 / host_ip 作为变量

我想创建一个包含变量的数组$user并将$host它们传递给ssh命令。

我努力了:

my_array=('something1' 'something2' 'user' 'host_ip')
sudo ssh ${my_array[2]}@${my_array[3]}

my_array=('something1' 'something2' 'user' 'host_ip')
sudo ssh host -l ${my_array[2]}  ## here host is not a variable

my_array=('something1' 'something2' 'username' 'host_ip')
my_var="${my_array[2]}@${my_array[3]}"
sudo ssh $my_var

在所有情况下,我都会被要求输入本地用户密码(因为sudo),并且我的答案被接受。当我输入远程用户密码时,我得到以下输出,然后我可以再试一次:

Permission denied, please try again.

笔记:

  • 我使用 IP 作为主机
  • 我的密码是正确的,并且当我不使用变量(sudo ssh user@host)时它可以正常工作。
  • 我最近安装了 sshpass 包

非常感谢!

编辑

由于某种原因,第二天上述所有方法和下面的解决方案都起作用了...有人能解释一下吗?

答案1

我认为这是引用问题,在变量中添加双引号:

my_array=('something1' 'something2' 'user' 'host')
sudo ssh ${my_array[2]}@"${my_array[3]}"

答案2

问题在于数组的主机元素中的引号,因为我使用的是 IP。当使用 IP 作为主机时,似乎需要一个数字元素。因此代码应该是:

my_array=('something1' 'something2' 'user' host_ip)
sudo ssh ${my_array[2]}@${my_array[3]}

相关内容