Відмінності між ssh -L до -D


52

Я намагаюся зрозуміти відмінності між ssh -L до -D. Чи є щось інше, окрім цього -D - це лише SOCKS?

Дякую!

Відповіді:


53

ssh -Lвідкриває місцевий порт. Все, що ви надсилаєте до цього порту, передається через ssh-з'єднання та залишає через сервер. Якщо ви зробите це, наприклад, ssh -L 4444:google.com:80якщо ви відкриєте http://localhost:4444у своєму браузері, ви дійсно побачите сторінку google.

ssh -Dвідкриває локальний порт, але він не має конкретної кінцевої точки, як у -L. Натомість він претендує на проксі-сервера SOCKS. Якщо ви відкриєте, наприклад, ssh -D 7777коли ви скажете своєму браузеру використовувати localhost:7777як проксі-сервер SOCKS, все, що запитає ваш браузер, проходить через тунель ssh. Для загальнодоступного Інтернету це як би ви переглядали зі свого ssh-сервера, а не з комп’ютера.


6
Важливою деталлю -L є те, що ви можете прив’язати локальний порт лише для місцевого використання, наприклад localhost: 80: remotehost: 8080, але ви можете також прив'язати цей порт для будь-кого іншого. Таким чином, ви можете зробити машину у вашій локальній мережі пропонувати доступ до віддаленої машини тунелем, без жодної з місцевих машин про це не знає.
ділбізеро

@dividebyzero У мене виникають проблеми з зображенням того, що ти описуєш
Майкл Дорст

@MichaelDorst Я маю на увазі це речення з 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.
manpage

ssh -L 4444:google.com:80для мене не працює, для входу в систему потрібен інший параметр, наприклад user@example.com
Saman Mohamadi

6

У SSH -Dвказує локальну "динамічну" переадресацію порту на рівні додатків.

SSH -D [bind_address:]port

Вказує локальну "динамічну" переадресацію порту на рівні додатків. Це працює, виділяючи сокет для прослуховування порту з локальної сторони, необов'язково прив'язаного до вказаного bind_address. Кожного разу, коли встановлено з'єднання з цим портом, з'єднання передається через захищений канал, а потім протокол програми використовується для визначення місця підключення з віддаленої машини. В даний час підтримуються протоколи SOCKS4 і SOCKS5, і ssh буде виконувати роль сервера SOCKS. Лише root може пересилати привілейовані порти. Динамічні переадресації портів можна також вказати у файлі конфігурації.

Адреси IPv6 можна вказати за допомогою альтернативного синтаксису: порт [bind_address /] або додавши адресу у квадратні дужки.

Лише суперпользователь може пересилати пільгові порти. За замовчуванням локальний порт зв'язаний відповідно до налаштування GatewayPorts. Однак явний bind_address може бути використаний для прив’язки з'єднання до певної адреси. Bind_address "localhost" вказує, що порт прослуховування повинен бути прив'язаний лише для локального використання, тоді як порожня адреса або "*" вказує на те, що порт повинен бути доступний з усіх інтерфейсів.

Додатково, ssh -LВказує, що даний порт на локальному (клієнтському) хості повинен бути пересланий на даний хост і порт на віддаленій стороні.

SSH -L [bind_address:]port:host:hostport

Вказує, що даний порт на локальному (клієнтському) хості повинен бути пересланий на даний хост і порт на віддаленій стороні. Це працює, виділяючи сокет для прослуховування порту на локальній стороні, необов'язково прив’язаний до вказаної адреси bind_address. Кожного разу, коли встановлено з'єднання з цим портом, з'єднання пересилається через захищений канал, а з'єднання здійснюється з хостом порту хоста від віддаленої машини. Переадресацію портів можна також вказати у файлі конфігурації. Адреси IPv6 можна вказати за допомогою альтернативного синтаксису: [bind_address /] порт / хост / порт хосту або шляхом додавання адреси у квадратні дужки.

Лише суперпользователь може пересилати пільгові порти. За замовчуванням локальний порт зв'язаний відповідно до налаштування GatewayPorts. Однак явний bind_address може бути використаний для прив’язки з'єднання до певної адреси. Bind_address "localhost" вказує, що порт прослуховування повинен бути прив'язаний лише для локального використання, тоді як порожня адреса або "*" вказує на те, що порт повинен бути доступний з усіх інтерфейсів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.