#1 05.02.2015 06:41:37

xstan
Administrator
Зарегистрирован: 05.02.2015
Сообщений: 5
IP-адрес

Скрипт Sh с командой su -

В общем такая задача.
Сделать скрипт запуска софта на удаленном сервере.
пример
su - USER -c "ssh -X server" # На локальной машине перейти под юзера и подключится на удаленны сервак
# ssh -X USER@server не прокатит. На удаленной машине пароль USER не известен, но сделан доступ по .ssh/authorized_keys
/bin/proga #выполняем нужную программу.

Проблема в том что первая часть скрипта выполняется, на server переходит нормально, но запуск программы не происходит.
Видимо потому что вторая часть пытается выполнится на локальной машине.

Как сделать чтобы вторая часть выполнялась именно на удаленной?

#2 05.02.2015 07:13:21

i2ks
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 6 797
IP-адрес

Скрипт Sh с командой su -

Quote by xstan
/bin/proga #выполняем нужную программу.

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

DISPLAY=:0.0 /bin/proga

#3 05.02.2015 07:18:49

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Скрипт Sh с командой su -

Quote by xstan
На удаленной машине пароль USER не известен
с какого перепугу?

[console]echo $USER[/console]
сделайте.
Quote by xstan
su - USER -c "ssh -X server" # На локальной машине перейти под юзера и подключится на удаленны сервак

используйте sudo, а не su.

#4 05.02.2015 07:25:41

i2ks
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 6 797
IP-адрес

Скрипт Sh с командой su -

Quote by drBatty
с какого перепугу?

ни чего удивителнього док, человеку дали учетку и сказали используй для атворизации ключик и все, это нормальная практика. :-)

#5 05.02.2015 07:28:21

Vascom
Administrator
Зарегистрирован: 02.04.2010
Сообщений: 4 019
IP-адрес

Скрипт Sh с командой su -

Просто сделай так:

# ssh -X -i /home/USER/.ssh/id_rsa USER@server

Соответственно /home/USER/.ssh/id_rsa - путь к файлу ключа (private key) пользователя. Никаких su или sudo здесь не требуется.

#6 05.02.2015 07:53:25

xstan
Administrator
Зарегистрирован: 05.02.2015
Сообщений: 5
IP-адрес

Скрипт Sh с командой su -

Quote by drBatty
используйте sudo, а не su.

sudo просит пароль от учетки которой выполняем скрипт (я выполняю скрипт не от учетки USER)
Quote by Vascom
Соответственно /home/USER/.ssh/id_rsa - путь к файлу ключа (private key) пользователя.

тоже самое, мне не даст прочитать .ssh другого юзера.

Суть.
Запустить скрипт от USER1
В скрипле перейти под USER от его имени подключится на удаленный сервак и на том сервере запустить программу с пробросом иксов на локальную.

Проблема заключается в том что как выполнить программу именно на удаленно компе.

[USER1@local]$ ./SKRIPT
Password: Вбиваем пароль от локальной учетки USER
---Переходит на server
[USER@server]$
[USER@server]$ logout
--Возвращается на локальную машину
[USER1@local]$ # Здесь выполняет скрипт.

Т.е. продолжает выполнение скрипта, а надо чтобы он продолжал на том хосте.

#7 05.02.2015 08:01:38

Vascom
Administrator
Зарегистрирован: 02.04.2010
Сообщений: 4 019
IP-адрес

Скрипт Sh с командой su -

Так бы и говорил сразу, что не от рута, а от другого пользователя надо.

То есть ты хочешь запустить скрипт локально, в нём перейти на другой сервер, потом вернуться, но чтобы скрипт продолжил работать на сервере?
Скорее всего это невозможно и тебе надо переосмыслить что ты хочешь получить.

#8 05.02.2015 08:18:31

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Скрипт Sh с командой su -

Quote by i2ks
ни чего удивителнього док, человеку дали учетку и сказали используй для атворизации ключик и все, это нормальная практика.
т.е. whoami и $USER религия не позволяет?

И потом, КАК без имени на сервер-то зайти? Что за бред?
Quote by xstan
sudo просит пароль от учетки которой выполняем скрипт (я выполняю скрипт не от учетки USER)

NOPASSWD and PASSWD

By default, sudo requires that a user authenticate him or herself before running a command. This behavior can be modi‐
fied via the NOPASSWD tag. Like a Runas_Spec, the NOPASSWD tag sets a default for the commands that follow it in the
Cmnd_Spec_List. Conversely, the PASSWD tag can be used to reverse things. For example:

ray rushmore = NOPASSWD: /bin/kill, /bin/ls, /usr/bin/lprm

would allow the user ray to run /bin/kill, /bin/ls, and /usr/bin/lprm as root on the machine rushmore without authenti‐
cating himself. If we only want ray to be able to run /bin/kill without a password the entry would be:

ray rushmore = NOPASSWD: /bin/kill, PASSWD: /bin/ls, /usr/bin/lprm

Note, however, that the PASSWD tag has no effect on users who are in the group specified by the exempt_group option.

By default, if the NOPASSWD tag is applied to any of the entries for a user on the current host, he or she will be able
to run “sudo -l” without a password. Additionally, a user may only run “sudo -v” without a password if the NOPASSWD tag
is present for all a user's entries that pertain to the current host. This behavior may be overridden via the verifypw
and listpw options.

Quote by xstan
Т.е. продолжает выполнение скрипта, а надо чтобы он продолжал на том хосте.

[console]user1$ sudo -u user2 ssh user3@server command[/console]
конечно нужно разрешить выполнение для user1 от имени user2 в /etc/sudoers локального(если user1≠root). user3 это имя пользователя на удалённом компе.

Quote by Vascom
Скорее всего это невозможно
легко.

#!/bin/bash

command &

#9 05.02.2015 08:21:44

Vascom
Administrator
Зарегистрирован: 02.04.2010
Сообщений: 4 019
IP-адрес

Скрипт Sh с командой su -

drBatty, в твоём варианте скрипт запускает что-то на сервере, а потом выходит. Это не соответствует тому, что описал топикстартер. У него сперва выходим, затем продолжаем работу самого скрипта на сервере.

#10 05.02.2015 08:24:24

xstan
Administrator
Зарегистрирован: 05.02.2015
Сообщений: 5
IP-адрес

Скрипт Sh с командой su -

Quote by Vascom
потом вернуться, но чтобы скрипт продолжил работать на сервере?

Возвращаться не надо.
Я привел для примера, что когда делаю логаут скрипт выполняется на локальной.

[console]
[USER1@local]$ su - USER
Пароль:
[USER@local]$ ssh -X server
[USER@server]$ /bin/proga
[/console]

Через консоль все работает, как это сделать в скрипте.

#11 05.02.2015 08:27:24

Vascom
Administrator
Зарегистрирован: 02.04.2010
Сообщений: 4 019
IP-адрес

Скрипт Sh с командой su -

Можно просто запустить команду на сервере

ssh -X server /bin/proga

Это тебе нужно?

#12 05.02.2015 08:34:53

i2ks
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 6 797
IP-адрес

Скрипт Sh с командой su -

Quote by drBatty
И потом, КАК без имени на сервер-то зайти? Что за бред?
почему берд, имя берется того пользваотеля под которым вы работаете.
если имя user
то
ssh host или ssh user@host , одно и то же будет

#13 05.02.2015 09:25:04

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Скрипт Sh с командой su -

Quote by Vascom
в твоём варианте скрипт запускает что-то на сервере, а потом выходит. Это не соответствует тому, что описал топикстартер. У него сперва выходим, затем продолжаем работу самого скрипта на сервере.
этот мой скрипт
#!/bin/bash
command &

нужно на сервере запускать. И command так на том сервере и будет работать. Конечно желательно её от терминала отвязать, или юзать screen(1).
Quote by xstan
Через консоль все работает, как это сделать в скрипте.
пропишите разрешение в sudo

USER1 local=(USER) NOPASSWD: /usr/bin/ssh USER@server command

тогда можно сделать
[console]USER1@local$ sudo -u USER /usr/bin/ssh USER@server command
[/console]
Quote by i2ks
почему берд, имя берется того пользваотеля под которым вы работаете.
и оно по вашему "не известно"?

Quote by i2ks
sh host или ssh user@host , одно и то же будет
лично я такие вещи прописываю в ~/.ssh/config

#14 05.02.2015 10:12:00

i2ks
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 6 797
IP-адрес

Скрипт Sh с командой su -

Quote by drBatty
и оно по вашему "не известно"?
ни кто не говорит то что "оно" не известно.
Quote by drBatty
лично я такие вещи прописываю в ~/.ssh/config
ну или так

#15 05.02.2015 10:31:20

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Скрипт Sh с командой su -

Quote by i2ks
ни кто не говорит то что "оно" не известно.
ну если известно, то в чём проблема-то? Зачем вообще нужен этот пароль на той машине, если вход УЖЕ осуществлён?
Quote by i2ks
лично я такие вещи прописываю в ~/.ssh/config

ну или так
угу. Ну можно долбаться и так, да. Я не против, если ТСу нравится кучу букв вбивать, то пусть страдает. Однако вангую, что ТСу не нравится, иначе зачем он скрипты осиливает?

#16 06.02.2015 04:27:45

xstan
Administrator
Зарегистрирован: 05.02.2015
Сообщений: 5
IP-адрес

Скрипт Sh с командой su -

Quote by Vascom
Можно просто запустить команду на сервере
ssh -X server /bin/proga
Это тебе нужно?


Сделал так.

[console]
su - USER -c "ssh -X server /bin/proga"
[/console]

Все работает. Просто надо было все сразу объединить в одну команду. Чтобы не было прерывания.

Всем спасибо.

#17 06.02.2015 06:26:31

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Скрипт Sh с командой su -

Quote by xstan
su -
мне этот вариант не нравится тем, что пароль постоянно надо вбивать. Ну и у su есть некоторые проблемы с наследованием окружения. Я рад, что вас эти проблемы(пока) не коснулись.

#18 06.02.2015 11:17:52

xstan
Administrator
Зарегистрирован: 05.02.2015
Сообщений: 5
IP-адрес

Скрипт Sh с командой su -

Quote by drBatty
мне этот вариант не нравится тем, что пароль постоянно надо вбивать

можно сделать что и не надо вбивать пасс, но это не без опасно.

#19 06.02.2015 11:21:40

drBatty
Administrator
Зарегистрирован: 20.02.2010
Сообщений: 17 053
IP-адрес

Скрипт Sh с командой su -

Quote by xstan
можно сделать что и не надо вбивать пасс, но это не без опасно.
как раз наоборот: если не вбивать пароль, то его не украдут. И делится не нужно. Ну и хранить в открытом виде тоже.

Просто нужно прописать ТОЛЬКО нужную команду, что-бы нельзя было другие выполнять.

Board footer