Когда я делаю
ssh -v -N -L 1234:localhost:6667 remotehost
То на локальной машине откроется порт 1234, который будет туннелем к remotehost:6667.
однако я не могу законнектиться на него теленетом. Пишет
Connection closed by foreign host.
Если на remotehost порт 6667 никто не обслуживает, то так и будет. Ибо сначала принимается подключение на локальной машине на порту 1234, а лишь затем делается попытка подключения к remotehost:6667. И если с remotehost:6667 получаем connection refused, то локально соединение на порту 1234 просто будет закрыто. Вот отсюда и Connection closed by foreign host.
На удаленной машине ни какие порты не открываются. (Так и должно быть?)
А с чего бы это listen-порты открывались? Либо ты что-то не понимаешь, либо одно из двух.
Когда я делаю
ssh -v -N -p 22 username@remotehost -L 5555/127.0.0.1/5900
у меня на локальной машине вообще не открываются новые порты.
Не верю. netstat -netulup покажи.
что происходит и как все внутри работает, а не пытаться шаманить по гуглу манам.
Есть три машины. Первая, которая выступает в качестве клиента ssh (client). Вторая, которая выступает в качестве ssh сервера (server). И третья, до которой организован защищённый туннель от клиента, через сервер и далее на машину назначения (endpoint).
user@client:~$ ssh username@server -L client:1234:endpoint:5900
На клиенте открывается порт - начальная точка туннеля (client:1234). Далее через ssh туннель траффик будет проброшен на сервер. И от сервера дальше пойдёт подключение до оконечной точки туннеля (endpoint:5900).