Как запустить ssh client под юзером во время загрузки (Нужно, чтобы при загрузке компа поднимался тоннель)
Модераторы: Warderer, Модераторы разделов
-
Fetaxe
- Сообщения: 9
Как запустить ssh client под юзером во время загрузки
Система 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 потом будет ползать в инет через этот тоннель.
Как правильно, чтобы всегда работало, прописать в автозагрузку поднятие 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 под юзером во время загрузки
Самое простое - прописать в /etc/rc.local. Запуск от имени нужного пользователя - через su -c или sudo.
Более правильным было бы написать инит-скрипт.
Более правильным было бы написать инит-скрипт.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
QwErTzz
- Сообщения: 24
- ОС: Kubuntu 14.10
Re: Как запустить ssh client под юзером во время загрузки
В rc.local
либо фоном запускать ssh клиент, без использования screen, если удалённая оболочка не нужна, тем же способом.
Код: Выделить всё
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 под юзером во время загрузки
А данном случае вместо 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.
The more you believe you don't do mistakes, the more bugs are in your code.
-
Fetaxe
- Сообщения: 9
Re: Как запустить ssh client под юзером во время загрузки
Я просто предвижу заморочки.
Во время загрузки никакие юзеры еще не залогинены, соответственно клиент не найдет
~/.ssh/known_hosts
и будет каждый раз просить напечатать yes
su скорее всего будет спрашивать пароль.
Как подобное сделано в других программах, в том же TOR например? TOR после поднятия сети сам начинает коннектиться к своим сереверам, используя юзера tor. Никакого пароля при этом не спрашивает, ключи хранит не в папке /home/tor (такой папки вообще нет), а где то у себя.
Во время загрузки никакие юзеры еще не залогинены, соответственно клиент не найдет
~/.ssh/known_hosts
и будет каждый раз просить напечатать yes
su скорее всего будет спрашивать пароль.
Как подобное сделано в других программах, в том же TOR например? TOR после поднятия сети сам начинает коннектиться к своим сереверам, используя юзера tor. Никакого пароля при этом не спрашивает, ключи хранит не в папке /home/tor (такой папки вообще нет), а где то у себя.
-
Bizdelnick
- Модератор
- Сообщения: 21405
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как запустить ssh client под юзером во время загрузки
Будучи запущенным от имени root - не будет.
Вы хоть попробуйте, прежде чем говорить, что ничего работать не станет.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Как запустить ssh client под юзером во время загрузки
наличие файла от логина не зависит.
rc.local выполняется от рута. Руту не нужны пароли.
так и сделано, как вам тут советуют.
PS: лично я использую sudo, т.к. su по моему мнению слишком тупая и топорная. Хотя в вашем случае можно и так.
и да. Su это и есть логин.
-
Fetaxe
- Сообщения: 9
Re: Как запустить ssh client под юзером во время загрузки
Попробовал закинуть скрипт с запуском ssh в /etc/network/if-up.d
Действительно не спрашивает ни пароля, не просит ничего вводить, т.е. ключ серевера видит.
Заморочки возникли другие
Утилита screen не запускается, пишет нету терминала
Хотя если просто запустить autossh без screen, то заходит на сервер без проблем. Потом очень сложно выйти, чтобы продолжить загрузку компа. Приходится несколько раз писать exit
Если запустить ssh, а не autossh, то заходит и exit нужно написать 2 раза.
Если запускать autossh с ключем -f, то в фоне начинает долбиться на сервер, но вываливается с ошибкой 255 и снова долбится, даже с помощью kill не убить процесс.
Действительно не спрашивает ни пароля, не просит ничего вводить, т.е. ключ серевера видит.
Заморочки возникли другие
Утилита screen не запускается, пишет нету терминала
Хотя если просто запустить autossh без screen, то заходит на сервер без проблем. Потом очень сложно выйти, чтобы продолжить загрузку компа. Приходится несколько раз писать exit
Если запустить ssh, а не autossh, то заходит и exit нужно написать 2 раза.
Если запускать autossh с ключем -f, то в фоне начинает долбиться на сервер, но вываливается с ошибкой 255 и снова долбится, даже с помощью kill не убить процесс.
-
Fetaxe
- Сообщения: 9
Re: Как запустить ssh client под юзером во время загрузки
А ssh с ключем -f пишет
Cannot fork into background without a command to execute
Ну мне желательно autossh в фон загнать, но чтоб он там нормально работал
Cannot fork into background without a command to execute
Ну мне желательно autossh в фон загнать, но чтоб он там нормально работал
-
Bizdelnick
- Модератор
- Сообщения: 21405
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как запустить ssh client под юзером во время загрузки
Добавьте -N.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
Fetaxe
- Сообщения: 9
Re: Как запустить ssh client под юзером во время загрузки
Добавил. Если запускать из загруженой системы, то появляется 2 процесса autossh и ssh. Все нормально работает.
Если из
/etc/network/if-up.d
то после загрузки один процесс autossh, а ssh видимо запуститься не может. В логе ошибки 255
Если из
/etc/network/if-up.d
то после загрузки один процесс autossh, а ssh видимо запуститься не может. В логе ошибки 255
-
Fetaxe
- Сообщения: 9
Re: Как запустить ssh client под юзером во время загрузки
Все запустилось, но почему то в 4ех экземплярах.
Т.е. каждой твари по паре и так 4 раза
Чтобы было понятно, что у меня сейчас наделано.
В папке
/etc/network/if-up.d
лежит исполняемый файл
sshtun
следующего содержания
Т.е. каждой твари по паре и так 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 под юзером во время загрузки
А сетевых интерфейсов у Вас сколько?
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
drBatty
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: Как запустить ssh client под юзером во время загрузки
надо не просто su, а
Код: Выделить всё
su --
Bizdelnick
- Модератор
- Сообщения: 21405
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как запустить ssh client под юзером во время загрузки
drBatty писал(а): ↑19.03.2014 12:46
надо не просто su, аили sudo, что-бы унаследовать окружение(в т.ч. и терминал)Код: Выделить всё
su -
А ткперь, внимание, правильный ответ: если нужен screen (а он, насколько я понял задачу, не нужен), его надо запускать с ключами -d -m.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
Fetaxe
- Сообщения: 9
Re: Как запустить ssh client под юзером во время загрузки
Да, в данной задаче нафиг мне screen ? Лишь бы тоннель поднимался и всегда работал, а смотреть там не на что.
По разному. На этом компе одна сетевушка. Но мысль я понял. Нужно или в другое место пихать строчку запуска, или делать какую то проверку запущен ли процесс или нет.
Мне хочется, чтобы как можно раньше старотовал коннект, но уже после DHCP клиента.
Тут нормально получается, пару раз он долбится и получает network unreachable, а с третьей попытки соединение устанавливает. Все это довольно быстро происходит, т.е. к логину рутом уже соединение оказывается поднятым.
В /etc/rc.local у меня сунуто обновление системного времени. К этому моменту желательно, чтобы тоннель уже был.
По разному. На этом компе одна сетевушка. Но мысль я понял. Нужно или в другое место пихать строчку запуска, или делать какую то проверку запущен ли процесс или нет.
Мне хочется, чтобы как можно раньше старотовал коннект, но уже после DHCP клиента.
Тут нормально получается, пару раз он долбится и получает network unreachable, а с третьей попытки соединение устанавливает. Все это довольно быстро происходит, т.е. к логину рутом уже соединение оказывается поднятым.
В /etc/rc.local у меня сунуто обновление системного времени. К этому моменту желательно, чтобы тоннель уже был.
-
Bizdelnick
- Модератор
- Сообщения: 21405
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как запустить ssh client под юзером во время загрузки
Если совсем по-правильному хочется сделать, то, как я говорил выше, пишите инит-скрипт.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
Fetaxe
- Сообщения: 9
-
Bizdelnick
- Модератор
- Сообщения: 21405
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Как запустить ssh client под юзером во время загрузки
См. /etc/init.d/skeleton.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
Fetaxe
- Сообщения: 9
Re: Как запустить ssh client под юзером во время загрузки
А все заработало и так. Добвил в строчку ключ -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 ...А что это за порт ? Он не поможет злодеям определить что у меня туннель ?