Подключение по SSH через SOCKS4/SOCKS5/HTTPS-прокси

В условиях, когда до хоста по каким-либо причинам нет прямого доступа по сети и он доступен только через SOCKS4/SOCKS5/HTTPS-прокси, может быть необходимо получить до него доступ по SSH. Например для использования Git over SSH.

Итак, предположим, у нас есть следующая структура сети:

  • git.example.org — сервер, к которому нам нужно получить SSH-доступ
  • 10.1.1.1:1080 — SOCKS5-прокси
  • localhost — хост, у которого уже есть доступ до git.example.org по HTTP(S) через SOCKS5 и нужен доступ по SSH.

Для реализации поставленной задачи понадобится только утилита netcat, которая по-моему входит в поставку по-умолчанию для всех дистрибутивов GNU/Linux и может быть отдельно установлена для Windows, а также небольшая правка файла конфигурации ssh. Необходимо для доступа к хосту git.example.org выполнить прокси-команду

nc -X 5 -x 10.1.1.1:1080 git.example.org 22

Также подключение можно выполнить через SOCKS4, или HTTPS-прокси, смотрите справочную страницу по netcat: man 1 nc.

В ~/.ssh/config на localhost это будет выглядеть следующим образом:

Host git.example.org
    ProxyCommand /usr/bin/nc -X 5 -x 10.1.1.1:1080 git.example.org 22
    Host git.example.org

Проверьте правильность пути до nc с помощью команды which nc.

Теперь с этого хоста можно использовать git-репозитории c git.example.org также, как если бы до него был прямой доступ, т.е.

git clone git@git.example.org:user/repo.git

Напоследок: ProxyCommand /usr/bin/nc -X 5 -x 10.1.1.1:1080 git.example.org 22 можно вынести первой строкой в ~/.ssh/config и тогда доступ до всех хостов будет осуществляться через указанный прокси-сервер.

Фикс игнорирования ввода с клавиатуры в продуктах JetBrains

При невыясненных (пока?) обстоятельствах, IDE от JetBrains в Linux могут начать игнорировать ввод с клавиатуры. У меня обычно это происходило при дебаге. Можно исправить перезапуском, но в процессе отладки этого делать конечно не хочется. Похоже это проблема взаимодействия IDE с ibus и её можно решить перезапуском ibus-daemon:

$ ibus-daemon --replace --daemonize

или короче

$ ibus-daemon -rd

Дополнительные ссылки:

В багтрекере JetBrains одним из решений предлагается апгрейд IBus до 1.5.11, но у меня зависает и на 1.5.22

Поиск «разжиревших» файлов

Когда внезапно кончается свободное место на диске, встает задача поиска виновника произошедшего. Для нахождения файла или каталога, использующих слишком много ресурсов, я обычно использую череду последовательных вызовов

$ sudo du -h --max-depth=1 / | sort -h
$ sudo du -h --max-depth=1 /var | sort -h

и так далее. На последнем шаге скорее всего понадобится помимо размера каталогов показать и размеры файлов в нем:

$ sudo du -ah --max-depth=1 / | sort -h

После удаления файла, если вывод df -h по прежнему показывает, что место на диске занято, посмотрите в какой программе он открыт:

$ sudo lsof +L1

Закройте, или перезапустите найденный сервис, после этого место на диске освободится.