Итак, я все же решил проверить, что там творится с пайпами ( говорить «трубами» язык не поворачивается ).
Запускаем ssh, без указания опции ProxyCommand:
ssh root@0.0.0.0
В соседней владке терминала смотрим, пытаемся отгрепать все открытые процессом пайпы:
lsof | grep -E "^ssh.*FIFO"
И ничего, пустота. Не удивительно, мы ведь ничего не пишем в stdin. Давайте попробуем что-то пописать:
pv /dev/zero | ssh root@0.0.0.0 "cat > /dev/null"
Прогресс-бар зашевелился, переходим в соседнюю вкладку, и снова пытаемся отгрепать
lsof | grep -E "^ssh.*FIFO"
В ответ получаем:
ssh 23782 svon 0r FIFO 0,8 0t0 2401849 pipe
ssh 23782 svon 4r FIFO 0,8 0t0 2401849 pipe
Так, отлично, ssh читает из stdout (0r), и еще откуда-то(4r). На этом этапе еще интересно посмотреть, какие TCP подключения использует ssh. Отгрепаем по TCP:
lsof | grep -E "^ssh.*TCP"
На выходе получим:
ssh 24344 svon 3u IPv4 2432025 0t0 TCP arch:59472->super-vps.hell:ssh (EST.)
Далее, запускаем ssh в связке с netcat (ProxyCommand )
ssh -o "ProxyCommand nc %h %p" root@0.0.0.0
Идем в соседнюю вкладку и опять грепаем, но только уже и netcat тоже:
lsof | grep -E "(^ssh|^nc).*FIFO"
И, что у нас на выходе?
ssh 24899 svon 4w FIFO 0,8 0t0 2449781 pipe
ssh 24899 svon 5r FIFO 0,8 0t0 2449782 pipe
nc 24900 svon 0r FIFO 0,8 0t0 2449781 pipe
nc 24900 svon 1w FIFO 0,8 0t0 2449782 pipe
А вот что. И если мы внимательно посмотрим на номера нод, то мы заметим.
Что 4w (ssh ?) пишет в 0r (netcat stdin), а 5r (ssh ?) читает из 1w (netcat stdout).
Забыли посмотреть подключения. Исправляем:
lsof | grep -E "(^ssh|^nc).*IPv4"
И имеем в итоге:
nc 24900 svon 3u IPv4 2449789 0t0 TCP arch:59476->super-vps.hell:ssh (EST.)
Видим, что из наших 2-х программ, подключение только одно, принадледжит оно неткету.
Если посмотреть лог запуска ssh (с опциями -vvv), можно увидеть, что все прекрасно шифруется, и вообще, во всем мире — мир.
Опираясь на факты, которые я привел выше, осмелюсь быть уверенным, что все работает именно по предполагаемой мной схеме (еще выше).
Что нам это позволяет? Вообще, много чего, но мне интересно было пробросить ssh туннель, через тор на свою VPS. Зачем? Хотя бы потому, что это прикольно. Спасибо что читаете, жду дополнений.