Я бы предложил пару вариантов.
Защитить ключ ssh и потребовать использования sudo
на стороне вашей команды поддержки. Это можно сделать прозрачно с помощью обертки. Назовите обертку, скажем, /usr/local/bin/ssh-support
и пусть она содержит что-то вроде этого (не проверено):
#!/bin/bash
export PATH=/usr/local/bin:/usr/bin:/bin
export IFS=$' \t\n'
export SUSER=ssupport
# Перезапустите, если не запущен под sudo
test "X$1" != 'X-S' && exec sudo -u "$SUSER" /usr/local/bin/ssh-support -S "$@"
сдвиг
export SHOME="$(getent passwd "$SUSER" | cut -d: -f6)"
# Извлекаем единственный аргумент в виде имени хоста LABEL и проверяем, что у нас есть
# закрытый ключ RSA для него. Имя целевого пользователя, реальное имя хоста, порт,
# и т.д. могут быть определены в ~/.ssh/config для пользователя $SUSER (ssupport)
label="$1"
idfile="$SUSER/.ssh/id_rsa_for_$label"
cgfile="$SUSER/.ssh/config"
ok=true
[[ "$label" =~ '/' ]] && { echo "Invalid label: $label" >&2; ok=; }
[[ ! -s "$idfile" ]] && { echo "Отсутствует файл идентификации: $idfile" >&2; ok=; }
[[ ! -s "$cgfile" ]] && { echo "Отсутствует файл конфигурации: $cgfile" >&2; ok=; }
if test -n "$ok"
тогда
logger -t ssh-support "$SUDO_USER запросил ssh на $label"
exec ssh -i "$idfile" -F "$cgfile" "$label"
fi
exit 1
Для этого потребуется запись в файле sudoers
, которая разрешает пользователям из группы support
использовать этот инструмент. Эта команда позволяет им запускать инструмент ssh-support
от имени пользователя ssupport
, которого вы должны создать. Он не предоставляет привилегий root.
%support ALL = (ssupport) /usr/local/bin/ssh-support
Если вас устраивает, что пользователям поддержки не нужно вводить свой пароль для запуска инструмента (как того требует sudo
в самом скрипте), вы можете изменить определение sudoers
следующим образом:
%support ALL = (ssupport) NOPASSWD: /usr/local/bin/ssh-support
Предполагая, что PATH
содержит /usr/local/bin/
, вы бы вызвали его с помощью ssh-support clientname
. Также предполагая, что вы создали пользователя ssupport
как /home/ssupport
, вы создадите /home/ssupport/.ssh/id_rsa_clientname
и /home/ssupport/. ssh/id_rsa_clientname.pub
в качестве пары сертификатов, и иметь запись хоста в /home/ssupport/.ssh/config
для clientname
, которая определяет пользователя, хост, порт и т.д. для целевой машины. Вы, вероятно, отключите переадресацию X11, переадресацию портов и т.д. в явном виде. Как обычно, каталог /home/ssupport/.ssh
должен быть защищен правами 0700
.
Дайте каждому члену группы поддержки свою собственную учетную запись локального пользователя, и пусть каждый использует свой личный ssh-ключ для доступа к серверам клиента. Когда человек покидает группу поддержки, вы удаляете его ssh-ключ с серверов клиента. Это означает, что вам больше не нужно беспокоиться о том, чтобы ваши сотрудники не узнали закрытый ключ ssh.
Вам просто нужно использовать $i
вместо 1
и сохранить текст в двойных кавычках вместо одинарных для этой опции:
for ((i=1;i<=5;i++)); do curl -s --user 'api:key- MY_KEY' \
https://api.mailgun.net/v3/sandbox/messages \
-F from="test$i@gmail.com" \
-F to='test@site.com' \
-F subject='Test Subject' \
-F text='Hey'; done
$i
— это значение переменной i
, которую вы увеличиваете от 1 до 5 в цикле.