Как запустить ssh client под юзером во время загрузки (Нужно, чтобы при загрузке компа поднимался тоннель)

Knoppix

Модераторы: Warderer, Модераторы разделов

Fetaxe
Сообщения: 9

Как запустить ssh client под юзером во время загрузки

Сообщение Fetaxe »

Система debian jessie

Как правильно, чтобы всегда работало, прописать в автозагрузку поднятие ssh sock5 туннеля?

Строчка ssh обычно выглядит так
ssh -D 2222 root@111.111.111.111 -i ./ssh.key

Поставил autossh
autossh -D 2222 root@111.111.111.111 -i ./ssh.key

Но нужно, чтобы тоннель поднимался во время загрузки, причем из под какого нибудь пользователя (не из под root). Это очень важно именно так, потому что root потом будет ползать в инет через этот тоннель.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21405
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как запустить ssh client под юзером во время загрузки

Сообщение Bizdelnick »

Самое простое - прописать в /etc/rc.local. Запуск от имени нужного пользователя - через su -c или sudo.
Более правильным было бы написать инит-скрипт.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
QwErTzz
Сообщения: 24
ОС: Kubuntu 14.10

Re: Как запустить ssh client под юзером во время загрузки

Сообщение QwErTzz »

В rc.local

Код: Выделить всё

su -c "screen -S sessionname ssh -D 2222 root@111.111.111.111 -i ./ssh.key"  username

либо фоном запускать ssh клиент, без использования screen, если удалённая оболочка не нужна, тем же способом.
Спасибо сказали:
Аватара пользователя
SLEDopit
Модератор
Сообщения: 4824
Статус: фанат консоли (=
ОС: GNU/Debian, RHEL

Re: Как запустить ssh client под юзером во время загрузки

Сообщение SLEDopit »

А данном случае вместо ssh лучше использовать autossh. Оно будет само заново соединяться в случае разрыва соединения.
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Fetaxe
Сообщения: 9

Re: Как запустить ssh client под юзером во время загрузки

Сообщение Fetaxe »

Я просто предвижу заморочки.

Во время загрузки никакие юзеры еще не залогинены, соответственно клиент не найдет
~/.ssh/known_hosts
и будет каждый раз просить напечатать yes


su скорее всего будет спрашивать пароль.

Как подобное сделано в других программах, в том же TOR например? TOR после поднятия сети сам начинает коннектиться к своим сереверам, используя юзера tor. Никакого пароля при этом не спрашивает, ключи хранит не в папке /home/tor (такой папки вообще нет), а где то у себя.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21405
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как запустить ssh client под юзером во время загрузки

Сообщение Bizdelnick »

Fetaxe писал(а):
19.03.2014 08:28
su скорее всего будет спрашивать пароль

Будучи запущенным от имени root - не будет.
Вы хоть попробуйте, прежде чем говорить, что ничего работать не станет.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как запустить ssh client под юзером во время загрузки

Сообщение drBatty »

Fetaxe писал(а):
19.03.2014 08:28
Во время загрузки никакие юзеры еще не залогинены, соответственно клиент не найдет
~/.ssh/known_hosts

наличие файла от логина не зависит.
Fetaxe писал(а):
19.03.2014 08:28
su скорее всего будет спрашивать пароль.

rc.local выполняется от рута. Руту не нужны пароли.
Fetaxe писал(а):
19.03.2014 08:28
Как подобное сделано в других программах, в том же TOR например?

так и сделано, как вам тут советуют.

PS: лично я использую sudo, т.к. su по моему мнению слишком тупая и топорная. Хотя в вашем случае можно и так.

Fetaxe писал(а):
19.03.2014 08:28
Во время загрузки никакие юзеры еще не залогинены

и да. Su это и есть логин.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Fetaxe
Сообщения: 9

Re: Как запустить ssh client под юзером во время загрузки

Сообщение Fetaxe »

Попробовал закинуть скрипт с запуском ssh в /etc/network/if-up.d

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

Заморочки возникли другие
Утилита screen не запускается, пишет нету терминала :)

Хотя если просто запустить autossh без screen, то заходит на сервер без проблем. Потом очень сложно выйти, чтобы продолжить загрузку компа. Приходится несколько раз писать exit

Если запустить ssh, а не autossh, то заходит и exit нужно написать 2 раза.

Если запускать autossh с ключем -f, то в фоне начинает долбиться на сервер, но вываливается с ошибкой 255 и снова долбится, даже с помощью kill не убить процесс.
Спасибо сказали:
Fetaxe
Сообщения: 9

Re: Как запустить ssh client под юзером во время загрузки

Сообщение Fetaxe »

А ssh с ключем -f пишет
Cannot fork into background without a command to execute

Ну мне желательно autossh в фон загнать, но чтоб он там нормально работал :)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21405
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как запустить ssh client под юзером во время загрузки

Сообщение Bizdelnick »

Fetaxe писал(а):
19.03.2014 11:54
А ssh с ключем -f пишет
Cannot fork into background without a command to execute

Добавьте -N.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Fetaxe
Сообщения: 9

Re: Как запустить ssh client под юзером во время загрузки

Сообщение Fetaxe »

Добавил. Если запускать из загруженой системы, то появляется 2 процесса autossh и ssh. Все нормально работает.
Если из
/etc/network/if-up.d
то после загрузки один процесс autossh, а ssh видимо запуститься не может. В логе ошибки 255
Спасибо сказали:
Fetaxe
Сообщения: 9

Re: Как запустить ssh client под юзером во время загрузки

Сообщение Fetaxe »

Все запустилось, но почему то в 4ех экземплярах.

Т.е. каждой твари по паре и так 4 раза


Чтобы было понятно, что у меня сейчас наделано.

В папке
/etc/network/if-up.d
лежит исполняемый файл
sshtun
следующего содержания

Код: Выделить всё

#!/bin/bash
su user -c "autossh -N -f -D 2222 root@111.111.111.111 -i /home/user/ssh.key"
exit 0
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21405
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как запустить ssh client под юзером во время загрузки

Сообщение Bizdelnick »

А сетевых интерфейсов у Вас сколько?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Как запустить ssh client под юзером во время загрузки

Сообщение drBatty »

Fetaxe писал(а):
19.03.2014 11:41
Утилита screen не запускается, пишет нету терминала

надо не просто su, а или sudo, что-бы унаследовать окружение(в т.ч. и терминал)
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21405
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как запустить ssh client под юзером во время загрузки

Сообщение Bizdelnick »

drBatty писал(а):
19.03.2014 12:46
Fetaxe писал(а):
19.03.2014 11:41
Утилита screen не запускается, пишет нету терминала

надо не просто su, а или sudo, что-бы унаследовать окружение(в т.ч. и терминал)

А ткперь, внимание, правильный ответ: если нужен screen (а он, насколько я понял задачу, не нужен), его надо запускать с ключами -d -m.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Fetaxe
Сообщения: 9

Re: Как запустить ssh client под юзером во время загрузки

Сообщение Fetaxe »

Да, в данной задаче нафиг мне screen ? Лишь бы тоннель поднимался и всегда работал, а смотреть там не на что.

Bizdelnick писал(а):
19.03.2014 12:43
А сетевых интерфейсов у Вас сколько?

По разному. На этом компе одна сетевушка. Но мысль я понял. Нужно или в другое место пихать строчку запуска, или делать какую то проверку запущен ли процесс или нет.

Мне хочется, чтобы как можно раньше старотовал коннект, но уже после DHCP клиента.
Тут нормально получается, пару раз он долбится и получает network unreachable, а с третьей попытки соединение устанавливает. Все это довольно быстро происходит, т.е. к логину рутом уже соединение оказывается поднятым.
В /etc/rc.local у меня сунуто обновление системного времени. К этому моменту желательно, чтобы тоннель уже был.
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21405
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как запустить ssh client под юзером во время загрузки

Сообщение Bizdelnick »

Если совсем по-правильному хочется сделать, то, как я говорил выше, пишите инит-скрипт.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Fetaxe
Сообщения: 9

Re: Как запустить ssh client под юзером во время загрузки

Сообщение Fetaxe »

Bizdelnick писал(а):
19.03.2014 13:39
Если совсем по-правильному хочется сделать

Хочется

Bizdelnick писал(а):
19.03.2014 13:39
то, как я говорил выше, пишите инит-скрипт.

Как ? :)
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 21405
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Как запустить ssh client под юзером во время загрузки

Сообщение Bizdelnick »

См. /etc/init.d/skeleton.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Fetaxe
Сообщения: 9

Re: Как запустить ssh client под юзером во время загрузки

Сообщение Fetaxe »

А все заработало и так. Добвил в строчку ключ -M 20037
Это какой то порт. Теперь в процессах только одна пара

Код: Выделить всё

/usr/lib/autossh/autossh -N    -M 20037 -D 2222 root@1...
/usr/bin/ssh -L 20037:127.0.0.1:20037 -R 20037:127.0.0.1:20038 -N -D 2222 -i ...


А что это за порт ? Он не поможет злодеям определить что у меня туннель ?
Спасибо сказали: