Обходной sshd AllowTCPFowarding=no путем установки собственного средства передачи?

phpunit | cat не работал (сигнализирующий, что это не проблема с watch но phpunit команда).

Как альтернатива, следующий подход сценария удара работал отлично для меня:

#!/bin/bash
while true; do
    (echo -en '\033[H'
        CMD="$@"
        bash -c "$CMD" | while read LINE; do 
            echo -n "$LINE"
            echo -e '\033[0K' 
        done
        echo -en '\033[J') | tac | tac 
    sleep 2 
done

Использование:

$ botch my-command
3
06.12.2012, 21:06
2 ответа

Ну, передача SSH является своего рода прокси-сервером. Это работает путем принятия соединения на одной стороне, затем устанавливания связи с другой стороны и затем передачи данных между двумя.

Вы могли легко сделать это, также. Например, с netcat:

nc -l -p 1234 ⇆ ssh user@remote 'nc remote2 80'

где представляет один из способов настроить двунаправленный канал. Это должно более или менее сделать это (игнорирующий любые проблемы буферизации).

Это не столь хорошо как встроенное, но конечно с определенной работой в Вашем предпочтительном языке сценариев, это могло быть.

5
27.01.2020, 21:14

Пользователь с доступом оболочки может легко работать sshd с его собственной конфигурацией (который может, например, позволять передачу TCP) на непривилегированном порте. Следовательно отключение его для постоянного системного демона не имеет большого смысла, если Вы не делаете тонну других стабилизирующих вещей.

1
27.01.2020, 21:14
  • 1
    Это тривиально фиксируется с iptables -P INPUT -j DROP (или эквивалентный) наряду с правилами позволить трафик Вы хотите, конечно. Который уже должен быть сделан в любой системе, где кто-то рассмотрел бы выключение AllowTcpForwarding. –  derobert 06.12.2012, 18:12
  • 2
    @derobert, Конечно, но затем необходимо настроить брандмауэр (который является дополнительным укреплением, которое я упомянул). Вы могли бы хотеть добавить это полужирным к Вашему ответу. :) –  peterph 06.12.2012, 18:27
  • 3
    @derobert И этому легко противостоят при помощи официального SSH, но туннелирующий в другой SSH, слушающий на localhost. (Если Вы брандмауэр localhost соединения много вещей собираетесь перестать работать.) –  Gilles 'SO- stop being evil' 07.12.2012, 01:30
  • 4
    @Gilles, которые я могу неправильно понимать, но ssh от localhost до localhost (на удаленной машине) не собирается помогать многому в передаче порта от Вашей локальной машины. –  derobert 07.12.2012, 03:12
  • 5
    @Gilles, Если AllowTcpForwarding отключен хотя, как может официальный SSH туннелировать в другой SSH, слушающий на localhost? Я на самом деле попробовал это, но получил повсеместный "канал 2: открытый отказавший: административно запрещенный: открытая неудавшаяся" ошибка, указывая (я полагаю), что официальный SSH не может передать соединение с локальным SSH. –  Eric B. 07.12.2012, 04:44

Теги

Похожие вопросы