У меня есть сервер Linux, и я хочу разместить его в домашней сети за маршрутизатором. Мне нужно когда-нибудь подключиться к этому серверу по ssh, но я не хочу настраивать переадресацию портов, потому что у меня нет доступа к маршрутизатору, и я также не знаю ip маршрутизатора.
Что я могу сделать, так это поместить некоторую программу на сервер linux, поэтому, когда она подключена к Интернету, она будет постоянно отправлять данные на мой другой сервер онлайн, чтобы я знал ее IP-адрес. Но есть ли способ ssh к серверу за роутером извне? что-то вроде NAT или сокета, который поддерживает сетевое соединение?
большое спасибо
источник
autossh
чтобы держать это открытым.Вы можете использовать своего рода VPN, чтобы заставить это работать, но это потребовало бы, чтобы у вас был сервер, к которому недоступный сервер мог бы получить доступ. Затем вы можете настроить OpenVPN на сервере, ПК и сервере с брандмауэром, включить
client-to-client
, и все готово. http://openvpn.net/howto.htmlисточник
Этот ответ основан на принятом, но добавляет детали, которые позволили мне сделать это. Я прошу прощения за объяснение пешехода, так как это совсем не моя экспертиза.
Предположим, у вас есть два компьютера,
A
иB
. Вы хотите перейтиssh
отA
кB
, и вы не можете выполнять переадресацию портов в подключенных к ним маршрутизаторах.Как говорится в принятом ответе, для этого вам нужен сервер
S
: на компьютереB
вы будете разрешатьssh
исходящие соединенияS
; и с компьютераA
, вы получите доступ к этому туннелю,S
чтобы достичьB
.Но как вы получаете этот сервер
S
? Я нашелserveo
(ссылка: https://serveo.net/ ). Это очень простое использование. Вам не нужно ничего устанавливать или регистрироваться, и это бесплатно. Согласно веб-сайту, следующие шаги:Подумайте о псевдониме для компьютера
B
. Например,computer_B_alias
.В компьютере
B
выполнитеssh -R computer_B_alias:22:localhost:22 serveo.net
.Теперь вы можете получить доступ к компьютеру
B
с компьютераA
, выполнив следующие действия на компьютереA
:,ssh -J serveo.net user@computer_B_alias
где вы должны заменитьuser
имя пользователя на компьютереB
.PS: Конечно, вы делаете пункт 2 автоматической задачей при запуске компьютера
B
.PSS: прежде чем попробовать это, убедитесь, что
ssh
установлено на обоих компьютерах. Для Ubuntu,sudo apt-get install ssh
сделал бы работу.источник
Долго отвечать. Надеюсь, это может помочь тому, кто ищет то же самое сейчас.
Если вы хотите получить доступ к серверу за NAT и не хотите писать код, вы, вероятно, можете воспользоваться инструментом ниже и использовать все, что вам подходит.
Оба вышеперечисленных инструмента предполагают, что у вас есть доступ к машине linux для установки их клиента. Некоторые из их преимуществ:
Лично я предпочитаю tmate больше, так как вы можете разместить сервер tmate на своем промежуточном сервере (для обратного ssh), в то время как телеконсоль может подключаться только к своим собственным серверам для обратного ssh.
источник