Ответы пользователя по тегу SSH
  • Не корректно работает служба для автоматического поднятия SSH туннеля?

    Vindicar
    @Vindicar
    RTFM!
    В [Service] пропиши Type=simple. И ещё, а как работает autossh? Он свой процесс крутит, или форкает новый? Может, ему нужен Type=forking?
    А заодно посмотри, может, стоит указать User, от имени которого будет исполняться ssh-туннель.

    Если что, journalctl -xe покажет последние логи - поищи там упоминания своего сервиса.
    Ответ написан
    6 комментариев
  • Какие ограничения есть на ip адреса для SSH?

    Vindicar
    @Vindicar
    RTFM!
    Часть IPv4 адресов (точнее, целые подсети) зарезервирована для локальных сетей и подобных целей - т.н. приватные адреса (private subnets). Они не доступны "снаружи", из Интернета, а только если ты находишься в той же сети.
    Какие именно - гугл и википедия знают.

    А "скорее всего" - даже если IP адрес публичный, не значит, что этот адрес соответствует реальному узлу. А если соответствует, не факт, что на узле поднят SSH сервер.
    Ответ написан
    Комментировать
  • Как сделать корректный вывод работы команды SSH?

    Vindicar
    @Vindicar
    RTFM!
    Это форматирование при выводе текста в терминал. По идее его можно попросить отключить, указав, что твой клиент это не поддерживает. Но не факт, что устройство тебя послушает.
    Управляющие последовательности ANSI

    И еще, ты читал вот этот ответ на stackoverflow?
    Там не совсем та же библиотека, но интерфейс выглядит очень похоже.
    var connInfo = new Renci.SshNet.PasswordConnectionInfo("<IP>", 22, "<USER>", "<PWD>");
    var sshClient = new Renci.SshNet.SshClient(connInfo);
    
    sshClient.Connect();
    var stream = sshClient.CreateShellStream("", 0, 0, 0, 0, 0);
    
    // Send the command
    stream.WriteLine("echo 'sample command output'");
    
    // Read with a suitable timeout to avoid hanging
    string line;
    while((line = stream.ReadLine(TimeSpan.FromSeconds(2))) != null)
    {
        Console.WriteLine(line);
        // if a termination pattern is known, check it here and break to exit immediately
    }
    // ...
    stream.Close();
    // ...
    sshClient.Disconnect();
    Ответ написан
    2 комментария
  • Как вывести результат команды на Listbox?

    Vindicar
    @Vindicar
    RTFM!
    Что значит "нет представления"?
    Ты можешь принять строку-ответ на посланную команду?
    Если да, то раздели её по символу переноса строки ('\n') на массив строк, перебери массив циклом и добавь каждый элемент в свой listbox. Вот и всё.
    А если не можешь, то тогда надо узнавать, как это сделать.
    Ответ написан
  • Что делаю не правильно с SSH?

    Vindicar
    @Vindicar
    RTFM!
    Учи язык, что тут скажешь. Точнее, читай про области видимости и время жизни объекта.
    У тебя SSHClient - локальная переменная в методе InitSSH(). Она существует, пока метод выполняется, и видна только внутри этого метода. По завершению метода она уничтожается.
    Если тебе нужно, чтобы время жизни объекта превышало время выполнения метода, т.е. чтобы объект не уничтожался по его завершении - объект должен лежать в атрибуте класса. Тогда его время жизни будет (как правило) равно времени жизни экземпляра класса (например, формы), а область видимости будет покрывать все методы класса.
    Ответ написан
  • Параллельный трафик через VPN?

    Vindicar
    @Vindicar
    RTFM!
    Не сработает. Ищи другие варианты.
    Что значит "другие VPNы"? Популярные VPN сервисы? Популярные VPN-протоколы?
    Потому что есть другие вещи, тот же shadowsocks - но это подразумевает наличие узла, где он развёрнут.
    Ответ написан
    1 комментарий
  • Как с вм2 подключиться по ssh ключу к вм3, если закрытый ключ храниться на 1 вм?

    Vindicar
    @Vindicar
    RTFM!
    У некоторых SSH клиентов есть ключ -J, попробуй его.
    Альтернативно, установи первое соединение с пробросом порта на локальную машину, и коннекться ко второму хосту через проброшенный порт.
    Ответ написан
    2 комментария
  • Как в консоли выбрать файл не вводя его имя?

    Vindicar
    @Vindicar
    RTFM!
    Используй Midnight Commander, у него есть командная строка и горячие клавиши для сброса в эту командную строку текущего выбранного файла в левой/правой панели.
    Ответ написан
    Комментировать
  • Как сделать автозапуск скрипта при попытке подключения к SSH-серверу?

    Vindicar
    @Vindicar
    RTFM!
    Закинуть его в .bashrc пользователя, под которым подключаешься. Я так сделал кастомный MOTD скрипт, который показывает состояние сервера, когда я подключаюсь.
    Ответ написан
    4 комментария
  • /tmp/id_rsa.pub: open for write: permission denied?

    Vindicar
    @Vindicar
    RTFM!
    Наверно, файл /tmp/id_rsa.pub остался со времени установки ключа для root, и был создан с правами root. Поэтому пользователь, под которым работает FTP-сервер, его не может открыть для перезаписи. Если файл не нужен, удали его из-под рута, и попробуй еще раз.
    Ответ написан
    Комментировать
  • Как конвертировать ssh туннель в vpn?

    Vindicar
    @Vindicar
    RTFM!
    Нет, скорее всего.

    Можно либо поднять на том же хосте VPN сервер, либо найти/арендовать готовый VPN, и настроить клиент так, чтобы он коннектился через этот прокси.

    А вообще, какой смысл в этой многослойной конструкции?
    Ответ написан
  • Не удается запустить демона для связи по ssh?

    Vindicar
    @Vindicar
    RTFM!
    ~/ssh
    Указывай полный путь до исполняемого файла. which ssh в помощь.
    Ответ написан
  • Почему перестает работать приложение на VPS после закрытия SSH?

    Vindicar
    @Vindicar
    RTFM!
    Я исхожу из того, что VPS под линуксом.
    Потому что когда ты закрываешь соединение, SSH-демон завершает процесс оболочки, который он запустил для его обслуживания (скорее всего это bash), посылая ему сигнал HUP. А твой сервис запущен как дочерний процесс из этой оболочки, и потому тоже получает сигнал HUP. Так как он этот сигнал не обрабатывает, он завершается.

    Если тебе нужно запустить процесс сервиса разово, и больше его не трогать, запускай его такой командой:
    nohup /путь/до/сервиса --параметры --сервиса &
    & позволит оболочке продолжить работу (запустит твою программу "в фоне"), а nohup "проглотит" сигнал HUP и тем самым не даст завершиться твоему сервису, когда ты отключишь сессию SSH. Но если сервис "упадёт", то запускать его придётся снова.

    Если для тебя допустимо запускать сервис вручную, и тебе нужно взаимодействие с сервисом через консоль (ну скажем, прочитать что он туда пишет), используй программу screen (может потребоваться её установить). Что это за программа, погугли сам, но вкратце, она позволяет создать сессию оболочки, которая переживёт отключение. Однако опять же, если сервис упал, screen его обратно не поднимет.

    Предыдущие варианты сойдут для отладки. А если на постоянку, то тебе нужно запускать сервис как демон, при старте VPS (ну мало ли хостер её перезагрузит), так что разбирайся с автозагрузкой. В зависимости от установленного на VPS дистрибутива это может быть скрипт init.d (смотри скрипты в каталоге /etc/init.d), модуль systemd или что-то ещё. Разбирайся, гугли, по этому материалов в сети полно.
    Ответ написан
    3 комментария
  • Как объеденить Ubuntu и windows 10 в локальную сеть?

    Vindicar
    @Vindicar
    RTFM!
    Вопрос: доступ по SSH откуда?
    Если с ноута на стационарный комп, то проблем должно быть минимум:
    1. Убедиться, что трафик ходит между компом и ноутом (интерфейсы подняты, адреса и подсети выбраны корректно).
    2. Убедиться, что SSH сервер слушает соответствующий адрес (ну или слушает 0.0.0.0).
    Роутер в этой схеме никак не участвует.

    Если же нужен SSH доступ изнутри сети роутера, но не с ноута, то тут дело сложнее. Помимо вышеуказанного:
    3. Ноут должен либо делать port forwarding на стационарный комп, либо делать bridge для двух сетей - wi fi и кабель.

    А если нужен доступ извне сети роутера, то дело ещё усложняется:
    4. Роутеру нужен внешний IP, на который можно постучаться.
    5. Роутер должен делать port forwarding для выбранного порта для SSH на ноут.

    Без конкретики (точная решаемая задача, схема сети, конфиги приложений, список проброшенных портов) тут ничего не посоветовать.
    Ответ написан
    Комментировать
  • Как передавать значение в ssh в ответ bat?

    Vindicar
    @Vindicar
    RTFM!
    Если ввод данных в программу производится со стандартного ввода, то должно быть возможно использовать перенаправление ввода/вывода вроде my_bat.bat < input.txt где в input.txt будут вводимые значения, по порядку, каждое на отдельной строке. Если же стандартный ввод не используется, это не сработает.
    Ответ написан
    1 комментарий
  • Несколько вопросов по линуксу от новичка?

    Vindicar
    @Vindicar
    RTFM!
    По поводу логов - logrotate настрой, он наверняка уже установлен, только разобраться как натравить его на лог твоей программы. Но опять же, некоторые проги с ума сходят от такого. Нужно пробовать.
    Ответ написан
    Комментировать
  • Какие запросы или домены нагружают сервер?

    Vindicar
    @Vindicar
    RTFM!
    Включить логирование запросов HTTP-сервером на несколько минут (чтобы всё дисковое пространство не забило), потом проанализировать логи?
    Ответ написан
  • Не выходит зайти в приложение X11. Что такое?

    Vindicar
    @Vindicar
    RTFM!
    Ну вообще пробросить графический интерфейс через SSH - не самая тривиальная задача.
    Почему бы не использовать предназначенные для этого инструменты типа VNC?
    Ответ написан
    Комментировать
  • Как настроить ssh туннель для smb?

    Vindicar
    @Vindicar
    RTFM!
    В ssh есть три варианта проброски портов.
    -L lport:remote.host:rport задаёт проброску клиентского порта, т.е.
    1. клиент SSH слушает порт lport на своей машине. По умолчанию на всех сетевых интерфейсах, но можно указать желаемый адрес, который будет слушаться, так: bind.address:lport:remote.host:rport
    2. когда к этому порту кто-то коннектится, клиент сообщает серверу
    3. сервер коннектится на remote.host:rport
    4. В дальнейшем данные пробрасываются через этот туннель.

    -R rport:local.host:lport работает наоборот
    1. сервер SSH слушает порт rport на своей стороне. По умолчанию на всех сетевых интерфейсах, но можно указать желаемый адрес, который будет слушаться, так: bind.address:rport:local.host:lport
    2. когда к этому порту кто-то коннектится, сервер уведомляет клиента
    3. клиент коннектится на local.host:lport
    4. В дальнейшем данные пробрасываются через этот туннель

    И последний, самый практичный, но самый трудно контролируемый.
    -D lport или -D bind.address:lport
    1. клиент слушает порт lport на своей стороне
    2. когда к этому порту кто-то коннектится, клиент пробрасывает соединение на ssh сервер
    3. ssh сервер отвечает по протоколу прокси SOCKS4/SOCKS5, и выполняет дальнейшие соединения в зависимости от желаний подключившегося приложения.
    Т.е. чтобы это работало, нужно чтобы приложение умело работать с SOCKS-прокси.

    Не помогает - значит нужно отлаживать. Я не вполне понял, где расположена smb-шара - на том же хосте, что и ssh сервер? Или на другом? Также стоит убедиться, что соединение с ssh сервером устанавливается нормально.
    Наконец, стоит выделить под такие туннели отдельного пользователя на сервере, и ограничить его в правах на всё, кроме использования туннеля.
    Ответ написан
  • Как удаленно получить время сервера Debian?

    Vindicar
    @Vindicar
    RTFM!
    Запустить на нем крошечный веб-сервер, который отвечает на запрос текущим системным временем?
    Ответ написан