LINUX.ORG.RU
ФорумAdmin

Смена пользователя и выполнение команд через SSH в скрипте.

 , ,


0

1

Доброго дня друзья.

Необходимо реализовать в скрипте следующий функционал.

  1. Сменить пользователя.
  2. Подключиться по SSH на удалённый хост.
  3. Выполнить команды на удалённом хосте.
  4. Отключиться от удалённого хоста и продолжить выполнение скрипта.

структура скрипта следующая:

su - $user -c "ssh $host"
command_1
command_2

Настроена авторизацию по ключам. Однако после авторизации по ssh выполнение скрипта останавливается. Подскажите как правильно реализовать такой функционал и после чего отключаться от хоста и продолжить выполнение скрипта?

Как-то так:

su - $user -c "ssh $host bash -" << EOF
command_1
command_2
EOF
xaizek ★★★★★ ()
Ответ на: комментарий от Oleg_Iu

Странность bash’а. Если подключаться таким образом ssh $user@$host , то авторизация по ключу не срабатывает и просит пароль. А если сначала менять пользователя на $user и потом авторизовываться по ssh, то авторизацию по ключу срабатывает.

dualCore ()
Ответ на: комментарий от Oleg_Iu

Поясните? Под пользователем которым я логинюсь сгенерирован ключ и отправлен на целевой хост.

ssh-keygen

ssh-copy-id

Что ещё нужно?

dualCore ()
Ответ на: комментарий от dualCore

делая ssh $user2@$host от user1 — ты логинишься с ключами текущего юзера

делая предварительно su user2 — ты логинишься с ключами user2

сделай ssh-copy-id от пользователя, который запускает скрипт, и не дури голову ни себе ни людям

calaki ()
Ответ на: комментарий от dualCore

Добавить ключ в активного пользователя (чтоб не переключаться между ними) через ssh-add

rukez ★★★ ()
Ответ на: комментарий от dualCore

Если с ключами все в порядке, то проверить, почему не работает:

ssh -v user@host

Oleg_Iu ()
Ответ на: комментарий от dualCore

ну дык усё прально. у каждого локального юзверя свои ключи.

вар1 копирнуть ключи из home/$user/.ssh в локальную ключницу текущего юзверя ~/.ssh

вар2 прописать ключи текущего юзверя на удаленную машину -> ssh-copy-id

вар3: подсунуть ssh-клиенту левые ключи

     -i identity_file
             Selects a file from which the identity (private key) for public key authentication is read.  The default is ~/.ssh/id_dsa, ~/.ssh/id_ecdsa, ~/.ssh/id_ecdsa_sk, ~/.ssh/id_ed25519, ~/.ssh/id_ed25519_sk and ~/.ssh/id_rsa.  Identity files may also be specified on a per-host basis in the configuration file.  It is possible to have multiple -i options (and multiple identities specified in configuration files).  If no certificates have been explicitly specified by the CertificateFile directive, ssh will also try to load certificate information from the filename obtained by appending -cert.pub to identity filenames.

вар4: прописать что ты хочешь в конфиге на подключение к указанному хосту.

/etc/ssh/ssh_config
Host *
#   IdentityFile ~/.ssh/id_rsa
#   IdentityFile ~/.ssh/id_dsa
#   IdentityFile ~/.ssh/id_ecdsa
#   IdentityFile ~/.ssh/id_ed25519

вариантов до пупа, главное понять на пупа оно такое.

pfg ★★★★★ ()
Последнее исправление: pfg (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.