Как я могу использовать SSH для туннелирования к порту, который открыт на машине, к которой у меня есть доступ, но не открыт для внешнего мира?

3

В настоящее время я использую SSH для туннелирования моего интернет-соединения, используя ssh -p <port> -ND <local port> <user>@<ip address>и это прекрасно работает. Однако я хотел бы привязать локальный порт к порту, который открыт на компьютере, к которому я работаю по SSH, но не открыт для внешнего мира, чтобы я мог подключиться к службе на компьютере, к которому я подключен по SSH. моя локальная машина ссылается на порт (скажем, 1234), такой как localhost: 1234, вместо, скажем, remotehost: 5678 (который не будет работать в моей ситуации из-за проблем с брандмауэром).

Eva
источник
просто любопытно, не означает ли "bash" "linux" и не является ли оно более конкретным?
Eva
Нет, BASH может быть OSX, UNIX или рядом других ОС, и в любом случае ваш вопрос касается переадресации порта ssh и поэтому не имеет ничего общего с BASH, который является ракушка ,
terdon
Я вижу, но команда не будет работать на OSX или Unix? Или у них нет команды "ssh" в bash? (Я спрашиваю, потому что мой вопрос касается конкретно ssh / port-forwarding с bash, а не с графическим интерфейсом, таким как Tunnelier)
Eva
ssh Команда никак не связана с BASH. В большинстве Linux это часть openSSH пакет. Вы можете запустить его, используя любой из нескольких оболочек (BASH, tcsh, zsh и т. Д.), Но это не часть любого из них. Вот почему я удалил тег BASH, он вводил в заблуждение, поскольку ваш вопрос никак не зависит от BASH.
terdon
Ах, хорошо - спасибо за разъяснение для меня :)
Eva

Ответы:

2

Вам нужно использовать опцию Bind Address в ssh:

 -L [bind_address:]port:host:hostport
         Specifies that the given port on the local (client) host
         is to be forwarded to the given host and port on the
         remote side.  This works by allocating a socket to lis‐
         ten to port on the local side, optionally bound to the
         specified bind_address.  Whenever a connection is made
         to this port, the connection is forwarded over the
         secure channel, and a connection is made to host port
         hostport from the remote machine.  Port forwardings can
         also be specified in the configuration file.  IPv6
         addresses can be specified by enclosing the address in
         square brackets.  Only the superuser can forward privi‐
         leged ports.  By default, the local port is bound in
         accordance with the GatewayPorts setting.  However, an
         explicit bind_address may be used to bind the connection
         to a specific address.  The bind_address of “localhost”
         indicates that the listening port be bound for local use
         only, while an empty address or ‘*’ indicates that the
         port should be available from all interfaces.

Так, например, чтобы привязать локальный порт 1234 к порту 6667 удаленного сервера server.example.com, вы должны сделать что-то вроде этого:

ssh -f -L 1234:localhost:6667 server.example.com 
terdon
источник
0

посмотрите здесь: http://dzervas.gr/notes/ssh-tunnel/ Он фактически создает локальный прокси-сервер socks, где все данные передаются на sshed-машину через любой порт.

dzervas
источник
0

Ваш вопрос немного странный, потому что вы спрашиваете, как настроить удаленный компьютер на получение доступа только с вашего исходного компьютера с помощью ssh?

Или вы спрашиваете, как настроить его, чтобы ограничить доступ, чтобы разрешить только ваш компьютер, с чем угодно, а затем подключиться к нему с помощью ssh.

Или вы говорите, что он уже настроен так, как вы теперь соединяетесь с SSH.

Во всяком случае,

Посмотри на эту ветку Вот в нем упоминается несколько способов ограничения доступа, в нем упоминается об этом с помощью SSH или с помощью iptables (брандмауэр), и если вы затем захотите подключиться с помощью SSH, это нормально.

Почему бы не добавить в ваш /etc/host.allow: sshd: IPADDRESS, IPADRRESS

или же

Что-то вроде этого в / etc / ssh / sshd_config возможно? AllowUsers   andy@192.168.1. *, 1.2.3.4,5.6.7.8

billy@192.168.1.* charlie@192.168.1.*

этот

Опция AllowUsers для sshd_config является самой простой

маршрут, если вы знаете, кто пользователи. С другой стороны,

есть одинаково простой способ tcp_wrappers

(/etc/hosts.allow и /etc/hosts.deny).

или же

Вероятно, проще настроить правило брандмауэра, например, iptables -A   INPUT -m состояние - состояние NEW -m tcp -p tcp --dport 22 --source [здесь принят IP-адрес] -j ПРИНЯТЬ

barlop
источник