Ваш вопрос несколько неясен. Похоже, что вы используете ключ SSH, но ключ SSH защищен парольной фразой. Но тогда он должен на самом деле спросить вас об этой парольной фразе, даже когда вы вошли в систему напрямую.
Что бы я сделал:
- Создайте специального пользователя (назовем его "runcripts") на компьютере A, который используется для запуска сценариев.
- Для этого пользователя создайте ключ SSH, который не зашифрован парольной фразой.
- Сконфигурируйте sudo, чтобы позволить "обычным" пользователям на машине A выполнять эти сценарии с правами пользователя "runcripts" и без необходимости вводить пароль.
Вот полный пример того, как это настроить:
Создайте нового пользователя, в который невозможно войти (в моей системе это также создаст новую группу с тем же именем, которое я буду использовать в следующем):
# adduser --disabled-password runscripts
Станьте этим пользователем и создайте ключ ssh. Не устанавливайте парольную фразу на ключе, просто нажмите ввод в приглашении пароля.
# su runscripts
$ ssh-keygen
Добавьте открытый ключ (в ~/.ssh/id_rsa.pub) к авторизованным ключам на целевой машине (машина B в вашем примере), затем коротко попробуйте войти по SSH-ключу (который также добавит удаленный открытый ключ к известному_хосту , чтобы потом не было подсказок позже).
$ ssh remoteuser@remote.host
Вернитесь к машине A: добавьте обычные учетные записи пользователя в группу:
# adduser kju runscripts
Создайте какой-нибудь скрипт, который будет использовать ключ SSH и что-то сделать на B:
# cat > /usr/local/bin/script1
#!/bin/sh
echo -n "Running as "
whoami
ssh remoteuser@machineB whoami
^D
# chmod +x /usr/local/bin/script1
Наконец, разрешите пользователям в групповых сценариях выполнения выполнять этот сценарий как пользовательский сценарий выполнения без пароля. Это строка из /etc /sudoers:
%runscripts ALL=(runscripts) NOPASSWD:/usr/local/bin/script1
Теперь, когда один из пользователей в группе выполняет скрипты, попробуйте запустить скрипт:
$ sudo -u runscripts /user/local/bin/script1
Running as user runscripts
remoteuser
$
Как видно из этого вывода, сценарий выполнялся как пользовательские сценарии выполнения. Затем он вошел на компьютер B как пользователь «remoteuser» и выполнил команду «whoami» (которая затем, конечно, вернула «remoteuser»).
Такое действие имеет то преимущество, что никто не сможет украсть (незащищенный) ключ SSH, потому что он доступен только как пользовательские скрипты, но люди могут запускать только заранее определенные скрипты с привилегиями этого пользователя.