В настоящее время я использую SSH для туннелирования моего интернет-соединения, используя ssh -p <port> -ND <local port> <user>@<ip address>
, и это прекрасно работает. Однако я хотел бы привязать локальный порт к порту, который открыт на компьютере, к которому я работаю по SSH, но не открыт для внешнего мира, чтобы я мог подключиться к службе на компьютере, к которому я подключен по SSH. моя локальная машина ссылается на порт (скажем, 1234), такой как localhost:1234, вместо, скажем, remotehost:5678 (который не будет работать в моей ситуации из-за проблем с брандмауэром).
4 ответа
предполагая, что хост ssh общедоступен, вы, вероятно, захотите взглянуть на Port Knocking Heres, один из способов применить его к SSH: http://www.marksanborn.net/linux/add-port-knocking-to-ssh-for-extra -безопасность/
Вам нужно использовать опцию 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
посмотрите здесь: http://dzervas.gr/notes/ssh-tunnel/ Это фактически создает локальный прокси-сервер socks, где все данные передаются на машину sshed, на любой порт.
Ваш вопрос немного странный, потому что вы спрашиваете, как настроить удаленный компьютер, чтобы он получал доступ только с вашего исходного компьютера с помощью 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 состояние --state NEW -m tcp -p tcp --dport 22 --source [здесь принят IP-адрес] -j ПРИНЯТЬ