SSH — различия между версиями
Litvinyuk (обсуждение | вклад) м (Откат правок Litvinyuk (обсуждение) к версии Podlasenko) |
Litvinyuk (обсуждение | вклад) (→Ссылки) |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 2: | Строка 2: | ||
Есть сервер с динамическим IP1 - С1. | Есть сервер с динамическим IP1 - С1. | ||
− | |||
− | |||
− | + | Есть сервер со статическим, публичным, "белым" IP2 - С2. | |
− | + | Почему-то на всех найденных в интернете статья данная функция SSH описана неправильно. | |
− | |||
− | Почему-то на всех найденных в интернете статья данная функция SSH описана неправильно | ||
Согласно документации обратный SSH-тоннель создается командой запущенной на сервере С1: | Согласно документации обратный SSH-тоннель создается командой запущенной на сервере С1: | ||
Строка 50: | Строка 46: | ||
[http://habrahabr.ru/post/122445/ Памятка пользователям ssh] | [http://habrahabr.ru/post/122445/ Памятка пользователям ssh] | ||
+ | |||
+ | [https://habrahabr.ru/post/331348/ Магия ssh] | ||
+ | |||
+ | [https://habrahabr.ru/company/1cloud/blog/338080/ Как управлять SSH-ключами на уровне предприятия] | ||
+ | |||
+ | [https://habr.com/ru/company/otus/blog/437114/ SSH/NC/Socat: tips & tricks] |
Текущая версия на 12:18, 13 февраля 2019
Обратные туннели
Есть сервер с динамическим IP1 - С1.
Есть сервер со статическим, публичным, "белым" IP2 - С2.
Почему-то на всех найденных в интернете статья данная функция SSH описана неправильно.
Согласно документации обратный SSH-тоннель создается командой запущенной на сервере С1:
ssh -fNTR bind_address:port:host:hostport user@server
теперь разберем что есть что:
-f - запуск ssh в фоновом режиме без запуска команд (иначе мы получим командную строку server).
-N — не выполнять удаленных команд;
-T — отключение псевдо-терминала (pts) полезно если нужно запускать эту команду по крону
-R [bind_address:]port - собственно приказание ssh создрать reverse тоннель.
bind_address - один из адресов сервера С2 или * - указываем по какому из адресов будет вход в тоннель.
port - порт на сервере С2, который и будет входом в тоннель.
host - Это адрес выхода из тоннеля. Гммм... Что будет если написать не localhost я пока не знаю...
- TODO: Проверить что localhost=hostname (если имя конечно нормально распознаётся DNS)=IP принадлежащий localhost
hostport - Это порт выхода из тоннеля.
user - пользователь на сервере server.
server - сервер С2.
Т.о. если мы хотим сделать доступ к ssh сервера С1 на любом адресе сервера С2 на порту 20022, то запускаем на сервере С1 команду:
ssh -f -R *:20022:localhost:22 userС2@С2
После чего с любого места интернета запускаем:
ssh -p 20022 userС1@С2
и получаем консоль сервера С1!
- TODO
- Как поднимать потерянное соединение при смене IP у С1;
- Что будет если не localhost написать ну и еще чего-нибудь.