LINUX.ORG.RU
ФорумAdmin

удаленный запуск программы через ssh


0

1

Привет!
Мне необходимо поключиться у удаленному хосту, запустить на нем tcpdmp и результат его работы перенаправить в стандартный поток вывода, который по передается в мое локальное приложение и обрабатывается.
При подключении к root@remote_host я использовала команду:
ssh root@remote_host «tcpdump -i eth0 'tcp port 80'» -w -| локальне приложение (допустим grep)
И не было проблем: tcpdump запускался, результат его работы направлялся в стандартный поток вывода и с помощью «|» я перенаправляла его в локальное приложение.
Но для подключения через не рутовского пользователя нужно использовать ssh с ключом -t (иначе не попросит пароль user'а):
ssh -t root@remote_host «tcpdump -i eth0 'tcp port 80'» -w -| локальне приложение
затем вводишь 2 пароля (root'а и user'а)
Перенаправление в мое локальное приложение перестает работать :(((
Запускала без перенаправления - работает: ssh -t root@remote_host «tcpdump -i eth0 'tcp port 80'»
Как вернуть результат работы удаленного приложения через ssh в такой схеме? Подозреваю, что у pseudo-tty, который создается из-за кюча -t, как-то по другому работает ввод-вывод,но как????

Но для подключения через не рутовского пользователя нужно использовать ssh с ключом -t (иначе не попросит пароль user'а):

ssh -t root@remote_host

Может, я неправильно понял эту фразу, но чем не подходит «ssh user@remote_host»?

gentoo_root ★★★★★
()

типичная картина - вместо формулировки самой задачи, описывается некое нагромождение костылей, с помощью которого ТС пытается эту самую задачу решить

zolden ★★★★★
()

sestrichka

Но для подключения через не рутовского пользователя нужно использовать ssh с ключом -t (иначе не попросит пароль user'а)

если-бы мама вам рассказала, что под рутом работают только маздайные ламеры, то у вас жизнь бы сложилась иначе. И вы наконец-то нашли бы тёлку, с большими сиськами.

drBatty ★★
()

и да, нормальные люди используют вход по ключу, что-бы им пароль не набивать. Впрочем это уже ваши проблемы.

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

gentoo_root

Может, я неправильно понял эту фразу, но чем не подходит «ssh user@remote_host»?

ЕМНИП ssh под рутом пароль не спрашивает.

UPD да, проверил - висит@тупит. Но молча.

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

ЕМНИП ssh под рутом пароль не спрашивает.

UPD да, проверил - висит@тупит. Но молча.

Странно, если я правильно понял, то УМВР. Залогинился рутом через sudo -i, запустил ssh user@host, пароль спросило, зашло.

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

gentoo_root

Странно, если я правильно понял, то УМВР. Залогинился рутом через sudo -i, запустил ssh user@host, пароль спросило, зашло.

Странно, но у меня не спросила.

ssh: connect to host 192.0.2.1 port 22: Connection timed out
Возможно просто потому, что там совсем другой порт. Впрочем, и с указанием порта не работает:
Permission denied (publickey,keyboard-interactive).
Конечно это потому, что у меня закрыт доступ по паролю. Открывать его мне честно говоря лениво.

Возможно это дистозависимо.

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

да, хостов с паролем у меня просто нет... ибо зло.

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

нормальные люди используют вход по ключу, что-бы им пароль не набивать. Впрочем это уже ваши проблемы.

Нормальные люди используют ключ с паролем. Впрочем это уже твои проблемы.

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

Mr_Alone

Нормальные люди используют ключ с паролем

Нормальные люди при этом не брезгуют использовать ssh agent

dexpl ★★★★★
()

йа тебя непанимайт!

aol@hp:~$ ssh -t root@192.168.248.1 'whoami'
Permission denied (publickey).
пробуй вот так:
aol@hp:~$ ssh 192.168.248.1 'su -c "whoami"'
Password: 
root
Connection to 192.168.248.1 closed.

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

Mr_Alone

Нормальные люди используют ключ с паролем. Впрочем это уже твои проблемы.

ключ с паролем на локальный домашний сервак? я что, упоролся? Да и толку с него?

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

dexpl

Нормальные люди при этом не брезгуют использовать ssh agent

не, это лишнее, ИМХО. А вот скринсэйвер на 3 минуты и вход по паролю - не лишний.

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

Mr_Alone

Нормальные люди используют ключ с паролем.

кстати, «ключ с паролем» это шифрованный ключ, или вход по ключу и вход по паролю?

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

Возможно просто потому, что там совсем другой порт.

Где другой порт? Он на сервере определяется.

Конечно это потому, что у меня закрыт доступ по паролю.

У меня и по ключу, и по паролю (от рута получилось по паролю, потому что его ключи не установлены на сервере), но я думаю, что проблема совсем в другом.

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

gentoo_root

Где другой порт? Он на сервере определяется.

на моём сервере не 22й.

gentoo_root

У меня и по ключу, и по паролю (от рута получилось по паролю, потому что его ключи не установлены на сервере), но я думаю, что проблема совсем в другом.

от рута у меня вообще замуровано. А от юзера - можно. Только ключи от удалённого юзера лежат у локального юзера, а у рута вообще ничего нет, ибо от рута я не работаю, и на сервера не вхожу.

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

А, я врубился. Не коннектится, потому что порт не 22-ой, а с указанием порта не входит, потому что ключей нет.

У меня же работает, потому что именно на тот сервер разрешён вход и по ключу, и по паролю.

Меня ещё в начале смутила эта фраза:

ЕМНИП ssh под рутом пароль не спрашивает.

У вас он не спрашивает, потому что сервер всё равно по паролю не пустит.

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

gentoo_root

У вас он не спрашивает, потому что сервер всё равно по паролю не пустит.

не. Если написать ssh root@host, то спрашивает. 3 раза спрашивает. Причём не важно, что ты будешь вводить (можно и правильный ввести, всё равно не пускает).

Ну а вообще это всё от версии/дистра/конфигов зависит конечно...

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

Если написать ssh root@host, то спрашивает.

Странно. Если я запрещаю на сервере вход по паролю, то у меня даже не спрашивает.

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

потому что там два параметра

PermitRootLogin no
PasswordAuthentication no
facepalm.jpg Уже поменял... У меня теперь тоже НЕ спрашивает. Но если первый no, а второй yes, то спрашивает. Это даже больше на пасхалку похоже...

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

mumpster

ssh разницы нет

хз. До ~/.ssh/config таки разница есть.

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

У меня нестандартная задача, поэтому вступление долгое.
Мне надо: удаленно через ssh запустить софт на хосте, а результат работы перебросить в stdout, который в свою очередь по шифрованному каналу вернется мне на локальную машину. Если логиниться к удаленному хосту под рутом проблем нет, но увы мне таких прав не дали.
Я впервые столкнулась с работой через pseudo-tty, из каторого мне надо каким-то чудом забрать данные по шифрованному каналу.
Не знаю где копать и как правильно задать вопрос в непонятной теме :(

Как из pseudo-tty запущенному через ssh на удаленном хосте забрать стандартный поток вывода stdout обратно в свой канал ssh????

sestrichka
() автор топика
Ответ на: комментарий от drBatty

Мне надо запускать на удаленном хосте софт, который требует рутовских прав, это не каприз или тупость, а необходимость. Удаленный хост не админю, а только ограниченно могу им воспользоваться, так что ругаться не стоит :)

Дело именно в удаленном запуске софта и обработке результатов его работы, но все это должно происходить через ssh!! Так работает: ssh root@remote_host «tcpdump -i eth0 'tcp port 80' -w -»| grep Все, что в двойных кавычках ваполняется на удаленном хосте, запись "-w - " значит «перебросить результат работы в stdout». Фактически забираю через ssh с удаленного хоста данные его стандартного патока вывода stdout. Так не работает: ssh -t user@remote_host «tcpdump -i eth0 'tcp port 80' -w -»| локальне приложение Связано видимо с использованием pseudo-tty. На сколько я понимаю: я законнектилась, там открылась pseudo-tty, в ней ввела 2й пароль, и в ней же началось выполнение tcpdump. Только вот контроль над запущенной программой теряется, ssh ничего не забирает с хоста!

Кто-то вообще удаленно запускал софт через ssh -t???

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

Pseudotty нужны для интерактивных задач. Тебе же нужно настроить авторизацию рутом по ключу (/root/.ssh/authorized_keys на remote_host) и запускать ssh без -t.

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

как-то всё запущено...как насчёт netcat?

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

sestrichka

Мне надо запускать на удаленном хосте софт, который требует рутовских прав, это не каприз или тупость, а необходимость. Удаленный хост не админю, а только ограниченно могу им воспользоваться, так что ругаться не стоит :)

всё дело в том, что если я правильно распарсил ман, то опция -t нужна как раз для того, что-бы вывод команды оставался на удалённом сервере, а НЕ передавался на ваш локальный. Он конечно передаётся потом, когда команда закончит свою работу. Но tcpdump это бесконечная команда.

Ну и наконец, я совершенно не понимаю, откуда там ВТОРОЙ пароль?

Может всё таки есть там у вас и sudo? или ваши команды это на самом деле не команды, а алиасы?

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

anonymous

Pseudotty нужны для интерактивных задач.

всё верно. Например mc без t не запускается, а с t запускается.

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

Такое ощущение, что в этом топике все явно обкурились чего-то тяжёлого.

Мне надо запускать на удаленном хосте софт, который требует рутовских прав, это не каприз или тупость, а необходимость. Удаленный хост не админю, а только ограниченно могу им воспользоваться, так что ругаться не стоит :)

При этом, насколько я понял, логиниться рутом на сервер для этого вам не дают (и правильно делают). Вам нужно а) настроить на сервере sudo для выполнения вашей команды без ввода пароля пользователя, примерно так (/etc/sudoers):

user ALL = NOPASSWD: /usr/sbin/tcpdump

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

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

Спасибо, попробую, если мне разрешат вносить такого рода изменения.

Если вам действительно нужно

Мне надо запускать на удаленном хосте софт, который требует рутовских прав

то тут вам поможет либо sudo (как я описал), либо suid-бит на tcpdump. По мне, sudo предпочтительнее (можно разрешить исполнять только с определённого хоста, например).

undertaker ★★
()
4 сентября 2012 г.

можно использовать netcat

flant ★★★★
()
Ответ на: запуск программ через ssh от anonymous

и да, аноно, на кой хрен февральскую тему заапал? это типа такой спам? Ну тогда почитай вот это: http://forum.drbatty.ru/viewtopic.php?f=77&t=5262&p=11649#p11649

Там правда про иксы не слова, но иксы по SSH юзают только ламеры.

drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.