Назад | Перейти на главную страницу

ssh: пользователь и host / 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) и мой ответ принят. Когда я ввожу пароль удаленного пользователя, я получаю следующий результат и могу попробовать agian:

Permission denied, please try again.

Ноты:

Большое спасибо!

редактировать

По какой-то причине на следующий день все вышеперечисленное и приведенные ниже решения сработали ... Кто-нибудь может это объяснить?

Проблема заключалась в кавычках в элементе хоста массива, потому что я использую IP. Кажется, что числовой элемент необходим, когда IP-адрес используется в качестве хоста. Итак, код должен быть:

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

Я думаю, что это проблема с цитированием, добавьте к переменным двойные кавычки:

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