Помилка тунелювання SSH: "канал 1: відкрито не вдалося: адміністративно заборонено: відкрито не вдалося"


184

Коли я відкриваю цей ssh-тунель:

ssh -nXNT -p 22 localhost -L 0.0.0.0:8984:remote:8983

Я отримую цю помилку при спробі отримати доступ до HTTP-сервера, що працює на localhost: 8984:

channel 1: open failed: administratively prohibited: open failed

Що означає ця помилка та на якій машині ви можете виправити проблему?


Можливо, мені чогось не вистачає, але чому ви намагаєтесь отримати доступ до веб-сервера за допомогою ssh-клієнта?
Faheem Mitha

Чому ви пересилаєте сюди X11 (опція -X)? Якщо ви хочете переслати лише HTTP, це не обов'язково. І як бічна примітка, IMHO ssh може бути неправильним рішенням зробити веб-сервер доступним у кількох портах.
Марсель G

29
Я виявив, що це означає "Неможливо вирішити ім'я хоста remote" в моєму випадку.
RobM

3
Як видно з десятка відповідей нижче, повідомлення про помилку, незважаючи на те, що воно виглядає дуже конкретним, слід розуміти як загальну помилку. Як правило, рішення полягає в тому, щоб відкрити оболонку на пульті та спробувати саме таке з'єднання, щоб побачити фактичну причину. Ви знайдете у відповідях нижче найпоширеніші фактичні причини.
Стефан Гурішон

Невдача роздільної здатності DNS може призвести до цієї помилки, а з'єднання може замерзнути, поки не вичерпається: superuser.com/a/700677
користувач423430

Відповіді:


122

канал 1: відкрито не вдалося: адміністративно заборонено: відкрито не вдалося

Вищезгадане повідомлення стосується вашого SSH-сервера, який відхиляє запит вашого клієнта SSH про відкриття бічного каналу. Зазвичай це відбувається з -D, -Lабо -w, оскільки для передачі переданих даних поперек необхідні окремі канали в потоці SSH.

Оскільки ви використовуєте -L(також застосовно до -D), є два питання, про які ваш SSH-сервер відхиляє цей запит:

  • AllowTcpForwarding (як згадував Стів Бузонас)
  • PermitOpen

Ці параметри можна знайти в /etc/ssh/sshd_config. Ви повинні переконатися, що:

  • AllowTCPForwarding або немає, коментується, або встановлено yes
  • PermitOpenабо немає, коментується, або встановлено any[1]

Крім того, якщо ви використовуєте ключ SSH для підключення, ви повинні перевірити, чи немає у записі, що відповідає вашому ключу SSH ~/.ssh/authorized_keys, no-port-forwardingабо у permitopenзаявах [2].

Не має відношення до вашої конкретної команди, але дещо стосується і цієї теми, це PermitTunnelваріант, якщо ви намагаєтесь використовувати параметр -w.

[1] Повний синтаксис в sshd_config(5)довідці.

[2] Повний синтаксис в authorized_keys(5)довідці.


Ось, що я спеціально додаю в sshd_config, щоб він працював: TCPKeepAlive так AllowTCPForwarding yes PermitOpen any У мене є кілька "відкритих помилок", але це здається нормальною справою. Речі працюють дуже добре.
П'єр Тібо

4
Кутовий випадок, який слід зазначити: Ви можете отримати цю помилку, намагаючись створити пристрій tap / tun з SSH, і SSH це дозволяє, але ядро ​​цього не робить. Це може статися в контейнерах LXC. Щоб отримати точні відомості, див. Blog.felixbrucker.com/2015/10/01/… , але в цьому випадку ви можете додати lxc.cgroup.devices.allow = c 10:200 rwmдо конфігурації вашого контейнера та переконатися, що якщо /dev/net/tunйого не існує, mknod /dev/net/tun c 10 200; chmod 666 /dev/net/tunвін запускається під час завантаження у контейнері.
Azendale

@ Azendale, це цікаво, дякую. Це видає точно таке саме повідомлення про помилку чи щось дещо інше?
гіперайр

1
@ St.Antario, AllowTcpForwardingдозволяє пересилати порти TCP через SSH, що -L 0.0.0.0:8984:remote:8983запитує цей параметр. Якщо AllowTcpForwardingвстановлено значення no, SSH відхилить запит на переадресацію порту, в результаті чого ви побачите цю помилку.
гіперайр

2
Намагався редагувати верхній регістр AllowTCPForwardingдо AllowTcpForwarding, але SE хоче принаймні 6 символів змінити. Тож просто зауваживши, що правильним випадком є Tcpверсія, якою правильно користуватися перший раз.
dbreaux

51

У дуже дивному випадку я також зазнав цю помилку, намагаючись створити локальний тунель. Моя команда була приблизно такою:

ssh -L 1234:localhost:1234 user@remote

Проблема полягала в тому, що на віддаленому хості /etc/hostsне було запису для "localhost", тому ssh-сервер не знав, як налаштувати тунель. Дуже недружнє повідомлення про помилку для цього випадку; рада, що я нарешті зрозумів це.

Урок: переконайтеся, що цільове ім'я хосту вашого тунелю буде вирішено віддаленим хостом або через DNS, або /etc/hosts.


2
Дякую, це було проблемою для мене. Я створив ім'я хоста для IP локально, але не на віддаленому сервері ssh.
dev_feed

2
"цільове ім'я хосту вашого тунелю" трохи важко розшифрувати. Чи можете ви навести конкретний дієвий приклад, який би дозволив мені взяти ваш приклад і замінити "цільове ім'я хоста" у вашому прикладі на моє цільове ім'я хоста (як тільки я зрозумію, що ви маєте на увазі під цим), і мати цю роботу?
Терренс Браннон

1
Я навіть не впевнений, що ваш коментар має сенс. Ви кажете, що на віддаленій машині не було входу для localhost. Але тоді скажіть, що віддалений хост повинен вирішувати цільове ім'я хоста, а не локальне ім'я хоста. Знову допоможе повний конкретний приклад ситуації до та після.
Терренс Браннон

1
@TerrenceBrannon в команді вище, "localhost" - це цільове ім'я хосту тунелю . Створюючи тунель SSH, команда ssh спочатку входить у віддалену систему ( user@remote), потім з віддаленого кінця встановлює тунелі для вказаних цільових хостів (у наведеній вище команді це так localhost). При цьому вона використовує схему роздільної здатності імені хоста на віддаленому хості. Тож якщо машина, на якій ви входили в SSH, не може вирішити localhost, ви отримаєте це повідомлення про помилку.
cobbzilla

1
У моєму випадку це було так само просто, як помилково ввести ім'я цільового хоста, так що, звичайно, це не вирішилось, але мої очі занадто довго пропустили друк.
Рандалл

25

Принаймні одна відповідь полягає в тому, що машина «віддалена» чомусь недоступна для ssh. Повідомлення про помилку просто абсурдне.


2
Ні, це не так; Я використовую icmp-admin заборонений як прапор відхилення у конфігураціях брандмауера весь час.
Шадур

9
+1, заборонене в адміністративному порядку повідомлення призведе до того, що це блокування брандмауера, однак ви отримуєте те саме повідомлення, коли блокування брандмауера немає, але відкрите не вдається, оскільки немає шляху до віддаленого хоста.
Стів Бузонас

1
Я щойно провів кілька хвилин на пошуки цієї проблеми, повідомлення якої не має сенсу в моєму контексті. На щастя, це досить зрозуміло після перевірки файлів журналів середньої станції.
yaccz

Дійсно, якщо "віддалений" недоступний - оскільки він в режимі офлайн, не існує, ім'я хоста не вирішується - тоді ви побачите це повідомлення про помилку.
Майкл Мартінес

18

Якщо "віддалений" не вдалося вирішити на сервері, ви отримаєте цю помилку. Замініть IP-адресу і подивіться, чи це вирішує вашу проблему ...

(В основному така ж відповідь, як і у Ніла, але я, безумовно, виявив, що це проблема з моєї сторони) [У мене був псевдонім для назви машини у моєму ~/.ssh/configфайлі - і віддалений апарат нічого не знав про цей псевдонім ...


Ви можете також побачити ту саму помилку при використанні -D(DynamicForward) як проксі-сервера SOCKS у веб-переглядачі. Тобто намагаються отримати доступ до веб-сайту, який хост тунелю не може вирішити.
таймс

10

Ця помилка остаточно з’являється, коли ви використовуєте параметри ssh ControlPathта ControlMasterдля спільного використання одного сокетного з'єднання для повторного використання між декількома підключеннями клієнтів (від одного клієнта до того ж користувача @ сервера). Відкриття занадто багато (що б це не означало, у моєму випадку ~ 20 підключень) дає це повідомлення. Якщо закрити будь-які попередні з'єднання, я можу відкривати новіші, знову до межі.


Я прийшов сюди шукати, де встановити цей контрольний ліміт мультиплексу ControlMaster. Якщо хтось знає, вони можуть більше поділитися.
clacke

1
clacke: відповідно до bugs.debian.org/cgi-bin/bugreport.cgi?bug=546854 ви можете додати параметр MaxSession у файл / etc / ssh / sshd_config, щоб встановити це. Відповідно до сторінки man, це значення за замовчуванням встановлено на 10.
олівер

@oliver: підтверджую, MaxSession працює, дякую. наткнувся на 64 на мою робочу книжку.
Матей Ковач

2
Будьте обережні, це не MaxSessionтак MaxSessions. Хоча є деякі захисти, не порушуйте конфігурацію сервера ssh ...
Stéphane Gourichon

8

"адміністративно заборонено" - це специфічний прапор повідомлення ICMP, який зводиться до "Адміністратор явно хоче, щоб це з'єднання було заблоковано".

Перевірте налаштування iptables.


5
Не обов'язково. Повідомлення генерується, коли хост не може обслуговувати запит. Справа, як правило, тому, що адміністратор заблокував з'єднання, але він також може бути таким, що він явно не заблокований, але немає маршруту до потрібного хоста. AFAIK sshне має логіки, щоб визначити, чому з'єднання не вдалося, він просто передбачає, що якщо ви намагаєтеся підключитися, він існує, і якщо ви не можете туди потрапити, з'єднання повинно бути заблоковано навмисно.
Стів Бузонас

2
Ні, ні. Існує чітка різниця між типом відповіді ICMP, який говорить "немає маршруту до хоста", і тим, хто говорить "адміністративно заборонено", і, якщо хтось навмисно неправильно налаштував маршрутизатор, останній означає саме те, що написано на бляшанці.
Шадур

1
Мені просто "адміністративно заборонено" під час використання імені хоста, яке не вирішилось, тому воно, здається, є загальним. Можливо, ssh робить якийсь переклад?
Ганеш Сіттампалам

5

Аналогічна проблема

Інший можливий результат

У мене була та ж проблема , використовуючи ~/.ssh/authorized_keysз permitopen.

Під час autosshстворення тунелю мені потрібні два порти:

  • один для підключення (10000),
  • один для моніторингу (10001).

На стороні клієнта

Це створило мені подібну проблему з моніторинговим портом:

autossh -M 10001 -o GatewayPorts=yes -o ServerAliveInterval=60  -o TCPKeepAlive=yes -T -N -R :10000:localhost:22 -i ~/.ssh/id_rsa user@remote

У мене було таке повідомлення (через 10 хвилин):

channel 2: open failed: administratively prohibited: open failed

На віддаленій стороні

Мій /var/log/auth.logмістив:

Received request to connect to host 127.0.0.1 port 10001, but the request was denied.

У моїй ~/.ssh/authorized_keys(віддаленій частині) у мене було таке:

command="/home/user/tunnel",no-X11-forwarding,no-pty,permitopen="localhost:10000",permitopen="localhost:10001" ssh-rsa AAAA...

Як її вирішити

Я вирішив це, замінивши localhostекземпляри на 127.0.0.1:

command="/home/user/tunnel",no-X11-forwarding,no-pty,permitopen="127.0.0.1:10000",permitopen="127.0.0.1:10001" ssh-rsa AAAA...

Схоже, що SSH не розуміє, що localhostце ярлик 127.0.0.1, отже, повідомлення auth.logі заборонене адміністративно повідомлення.

Що я тут розумію, це те, що адміністративно означає "завдяки певній конфігурації на стороні сервера".


localhost, ймовірно, відображений на :: 1 (ipv6), і ви чомусь там не слухали
Jo Rhett

4

Це також відбувається, коли /etc/sshd_configє

AllowTcpForwarding no 

набір. Переключіть його на, yesщоб дозволити переадресацію TCP.


4

У моєму випадку, мені довелося замінити localhostз 127.0.0.1в:

ssh -L 1234:localhost:3389 user@remote

щоб змусити його працювати.

Я намагався виконувати вказівкиrdesktop -L localhost:1234 Amazon щодо підключення до AWS EC2 через тунелювання SSH . Я намагався змінити /etc/ssh/sshd_config(як клієнтський, так і серверний Ubuntu 16.04 LTS) на найвищу відповідь. Я також перевірив, що localhostзнаходиться в /etc/hostsобох сторонах.

Нічого не працювало, поки я не змінив саму sshкоманду на:

ssh -L 1234:127.0.0.1:3389 user@remote

Дуже дякую!
Thibaut Barrère

3

Для пошуку остаточної відповіді потрібна деяка діяльність з усунення несправностей:

  • перевірте, чи включено переадресація портів у конфігурації ssh користувача,
  • включити багатослівність ssh (-v),
  • перевірити ssh-журнали на локальному хості та захистити журнали на віддаленому,
  • перевірити різні віддалені порти,
  • перевірте свої параметри iptables (як сказав Шадур).

3

Я отримав цю помилку один раз для введення пульта в параметр -L, також 0.0.0.0 є зайвим, ви можете опустити його з тими ж результатами, і я думаю, ви повинні додати -g, щоб він працював.

Це рядок, який я використовую для тунелювання: ssh -L 8983:locahost:8984 user@remote -4 -g -N

-4 tells to use only ipv4
-g Allows remote hosts to connect to local forwarded ports.
-N Do not execute a remote command.  This is useful for just forwarding ports (protocol version 2 only). I use this to clog the terminal so I don't forget to close it since generally I need the tunnels temporarily.

3

Це також може бути спричинено тим, що неможливо прив’язатись до порту на локальній стороні.

ssh -Nn -L 1234:remote:5678 user@remote

Ця команда намагається прив’язати до локальної машини порт 1234 прослуховування, який відображає сервіс на порт 5678 на віддаленій машині.

Якщо порт 1234 на локальній машині вже використовується іншим процесом (можливо фоновим сеансом ssh -f), то ssh не зможе прослуховувати цей порт і тунель вийде з ладу.

Проблема полягає в тому, що це повідомлення про помилку може означати будь-яку з кількох речей, а "адміністративно заборонено" іноді дає неправильну думку. Отже, крім перевірки DNS, міжмережевих стін між локальним та віддаленим та sshd_config, перевірте, чи вже використовується локальний порт. Використовуйте

lsof -ti:1234

щоб зрозуміти, який процес працює на 1234. Вам може знадобитися sudo для lsof, щоб перелічити процеси, що належать іншим користувачам. Тоді можна використовувати

ps aux | grep <pid>

щоб з'ясувати, що це за процес.

Щоб отримати все це в одній команді:

ps aux | grep "$(sudo lsof -ti:1234)"

2

У мене було те саме повідомлення під час спроби тунелю. Виникла проблема із сервером dns на віддаленій стороні. Проблема була вирішена, коли вона повернулася до роботи.


2

Я надзвичайно здивований, що ніхто не згадував, що це може бути проблема DNS.

journalctl -f
channel 3: open failed: administratively prohibited: open failed
Mar 10 15:24:57 hostname sshd[30303]: error: connect_to user@example.com: unknown host (Name or service not known)

Це може бути представлено, якщо remoteце не вирішується, або ви ввели невідомий синтаксис, як я це зробив тут, де я додав user@логіку до переадресації портів (яка не працюватиме).


2

У моєму випадку проблема сталася із запитом тунелю без доступу до оболонки, тоді як сервер мав на меті змінити пароль для мого облікового запису. Через відсутність оболонки я не міг цього бачити і отримував лише помилку

channel 2: open failed: administratively prohibited: open failed  

Моя конфігурація тунелю була такою:

ssh -p [ssh-port] -N -f -L [local-port]:127.0.0.1:[remote-port]
[server-address]

Помилка, виявлена ​​при вході безпосередньо на сервер (без -N -f):

WARNING: Your password has expired. You must change your password now
and login again!

Я вирішив проблему, увійшовши з доступом до оболонки та змінивши пароль. Тоді я міг би просто використовувати тунелі без доступу оболонки знову.


1

У мене виникла ця проблема, коли я намагався підключитися через SSH з користувачем, який отримав дозвіл на з'єднання лише за допомогою SFTP.

Наприклад, це було на сервері /etc/ssh/sshd_config:

Match group sftponly
    ForceCommand internal-sftp
    ChrootDirectory /usr/chroot/%u
    [...]
Match

Тому в цьому випадку, щоб використовувати SSH, вам доведеться або видалити користувача з еквівалентної sftponlyгрупи, або підключитись за допомогою користувача, який не обмежується SFTP.


1

Перевірте, чи /etc/resolv.confна сервері, на якому ви збираєтесь, порожній ssh. Кілька разів я виявляв, що це пов’язано з порожнім /etc/resolv.confфайлом

Якщо немає root, ви можете просто перевірити на сервері, спробувавши деякі pingабо telnet(80) на загальнодоступному імені хоста, тобто:

root@bananapi ~ # telnet www.google.com 80
telnet: could not resolve www.google.com/80: Name or service not known

Після додавання записів серверів імен до /etc/resolv.conf:

root@bananapi ~ # telnet www.google.com 80
Trying 74.125.195.104...
Connected to www.google.com.
Escape character is '^]'.
GET / HTTP/1.0

HTTP/1.0 302 Found
Location: http://www.google.ro/?gws_rd=cr&ei=8fStVZ-hMIv6UvX6iuAK

Однак ви також повинні перевірити, чому він /etc/resolv.confбув порожнім (зазвичай це заповнено записами серверів імен клієнтом dhcp на сервері, якщо це можливо.


1

Я отримував те саме повідомлення під час налаштування SSH на Debian. Виявилося, що у віддаленій системі не було вільного місця. Після звільнення місця на диску і перезавантаження, тунель почав працювати.


0

Я бачив цю помилку на cygwin, і це повинно бути правдою і для Linux і працювало на мене. У моєму випадку я зробив ssh -ND *: 1234 user@127.0.0.1, і коли я підключив браузер до цього сервера комп’ютерних шкарпеток, він переглянувся, але на комп, де я запустив цю команду ssh, у мене з’явилася помилка консоль із кожним запитом - принаймні для одного сайту, хоча браузер витягував його через проксі-сервер або, здавалося б, принаймні настільки, наскільки я бачив основний вік. Але внесення цієї зміни позбулося невдалого повідомлення

http://linuxindetails.wordpress.com/2010/02/18/channel-3-open-failed-administratively-prohibited-open-failed/

While trying to do some SSH tunneling, here is the error I got :
channel 3: open failed: administratively prohibited: open failed
To avoid this kind of error, have a look at the SSH daemon configuration file :
/etc/ssh/sshd_config
Add possibly the following line :
root@remote-server:~# echo “PermitTunnel yes” >> /etc/ssh/sshd_config
Then, restart your sshd server :
root@remote-server:~# service ssh restart
or

root@remote-server:~# /etc/init.d/ssh restart

Тунелювання AFAIK увімкнено за замовчуванням, оскільки відключення не додає будь-якого рівня безпеки, насамперед лише незручності додавання стороннього тунелю. У мене є аналогічна проблема, що намагається проксі-сервер на внутрішніх серверах з розташування за межами сайту, і тунелювання ввімкнено + iptables змикаються з дією за замовчуванням на ACCEPT.
Стів Бузонас

@SteveBuzonas Я бачу це в / etc / sshd_config, так що а) він не вимикає тунелювання b) щодо моєї відповіді, рішення може бути не гарною ідеєю. Ось що говорить sshd_config про цю опцію # Щоб вимкнути тунельовані прозорі текстові паролі, змініть тут "ні"! #PermitTunnel ні
барлоп

@SteveBuzonas перевірте ваш, можливо, встановлено значення "ні", і ви можете тунелювати, оскільки тунелювання дійсно включено за замовчуванням.
барлоп

Я замислювався над тим AllowTCPForwarding, що коментар, про який ви говорите # To disable tunneled clear text, стосується PasswordAuthenticationвстановлення значення "ні", PermitTunnelце налаштування, щоб дозволити мережеві тунелі другого рівня або рівня 3 через tun / tap, а за замовчуванням - ні. Параметри L, R і D використовують пересилання TCP, а не пристрій для тунелювання.
Стів Бузонас

0

Ще один сценарій - це те, що служба, до якої ви намагаєтесь отримати доступ, не працює. Я наткнувся на цю проблему днями, лише щоб згадати примірник httpd, до якого я намагався підключитися, був зупинений.

Ваші кроки до вирішення проблеми полягають у тому, щоб почати з найпростішого, який переходить на іншу машину і бачите, чи зможете ви підключитися локально, а потім знову працювати над клієнтським комп'ютером. Принаймні, це дозволить вам опрацювати, в який момент спілкування не відбувається. Можна скористатися іншими підходами, але це той, який працював на мене.


Корисна загальна порада, але не відповідь на поставлене питання.
Кайл Джонс

0

Перевірте свій маршрутизатор на захист від рендеринга DNS . Мій маршрутизатор (pfsense) має захист від рендеринга DNS, включений за замовчуванням. Це спричинило помилку "канал відкритий: не вдалося адміністративно заборонено: відкрити не вдалося" помилку з SSH


0

У мене був той самий випуск, і я зрозумів, що це DNS. Трафік тунельний, але запит DNS немає. Спробуйте відредагувати файл хостів DNS вручну та додати службу, до якої ви хочете отримати доступ.


0

Мій випадок:

$ssh -D 8081 localhost >>log1.txt 2>&1 &

----wait for 3 days

$tail -f log1.txt
channel 963: open failed: connect failed: Connection refused
channel 963: open failed: connect failed: Connection refused
channel 971: open failed: connect failed: Connection reset by peer
channel 982: open failed: connect failed: Connection timed out
channel 979: open failed: connect failed: Connection timed out
channel 1019: open failed: administratively prohibited: open failed
accept: Too many open files
channel 1019: open failed: administratively prohibited: open failed
accept: Too many open files
channel 1019: open failed: administratively prohibited: open failed

$ps  axu | grep 8081
root       404  0.0  0.0   4244   592 pts/1    S+   05:44   0:00 grep --color=auto 8081
root       807  0.3  0.6   8596  6192 ?        S    Mar17  76:44 ssh -D 8081 localhost

$lsof -p 807 | grep TCP
ssh     807 root 1013u  sock     0,8      0t0 2076902 protocol: TCP
ssh     807 root 1014u  sock     0,8      0t0 2078751 protocol: TCP
ssh     807 root 1015u  sock     0,8      0t0 2076894 protocol: TCP
.....

$lsof -p 807 | wc -l
1047

$ cat /etc/hosts
127.0.0.1   localhost
127.0.1.1   malcolm-desktop

$ssh localhost
Welcome to Ubuntu 14.04.2 LTS (GNU/Linux 3.13.0-53-generic i686)

----after restart ssh -D 8081 localhost
$ lsof -p 1184 | grep TCP
ssh     1184 root    3u  IPv4 2332193      0t0   TCP localhost:37742->localhost:ssh (ESTABLISHED)
ssh     1184 root    4u  IPv6 2332197      0t0   TCP ip6-localhost:tproxy (LISTEN)
ssh     1184 root    5u  IPv4 2332198      0t0   TCP localhost:tproxy (LISTEN)
ssh     1184 root    6u  IPv4 2332215      0t0   TCP localhost:tproxy->localhost:60136 (ESTABLISHED)
ssh     1184 root    7u  IPv4 2336142      0t0   TCP localhost:tproxy->localhost:32928 (CLOSE_WAIT)
ssh     1184 root    8u  IPv4 2336062      0t0   TCP localhost:tproxy->localhost:32880 (CLOSE_WAIT)

0

Я отримав цю помилку під час написання цього запису у своєму блозі :

/etc/ssh/sshd_config було щось на кшталт:

Match Group SSHTunnel_RemoteAccessGroup
    AllowTcpForwarding yes
    PermitOpen=sshbeyondremote.server.com:22

Але ~/.ssh/configмав:

Host remote.server.com
  HostName remote.server.com
  Port 10022
  User useronremote
  IdentityFile ~/.ssh/keys/key1/openssh.keyforremote.priv
  LocalForward 2222 SSHBeyondRemote.server.com:22

Зверніть увагу на різницю в регістрі (великої літери) між SSHBeyondRemote.server.com:22 та sshbeyondremote.server.com:22 .

Після того, як я виправив справу, я більше не бачив проблеми.

Я використовував:

Версія клієнта OpenSSH:

  • OpenSSH_7.2p2 Ubuntu-4ubuntu2.4, OpenSSL 1.0.2g 1 березня 2016 року

Версія сервера OpenSSH:

  • OpenSSH_7.6p1 Debian-4, OpenSSL 1.0.2n 7 грудня 2017 року

1
Якщо ви збираєтесь посилатися на, просувати, цитувати або іншим чином посилатися на щось, з чим ви пов’язані, ви повинні чітко розкрити цю приналежність. Говорити "під час з'єднання (посилання)" "недостатньо (тому що я не зрозумів, що це означає, поки я не зрозумів, що ви посилаєтесь на свій власний блог); наявність URL-адреси, яка відповідає вашому імені користувача Stack Exchange, недостатня. Список літератури: Як не бути спамером ,  уникати явного самореклами ,… (Продовження)
Скотт,

(Продовження)… і коли нам слід застосовувати вимогу щодо належності?    Ви можете згадати свій блог, свого роботодавця, будь-яке відоме вами програмне забезпечення, будь-які написані вами книги, будь-які інші проекти, з якими ви є чи пов’язані з вами тощо, на своїй сторінці профілю користувача. .
Скотт

0

Інша причина вирішення імені: Мій / etc / hosts мав помилкову IP-адресу для імені сервера (не для localhost), наприклад:

127.0.0.1     localhost
192.168.2.45  server.domain.com server

Але налаштований IP-сервер (і ім'я DNS, вирішене за допомогою команд хост / копати), було 192.168.2.47. Простий друк, викликаний попередньою конфігурацією IP. Після виправлення / etc / hosts тунельне підключення спрацювало бездоганно:

ssh user@server.domain.com -L 3456:127.0.0.1:5901

Дивно, що справжній IP викликав збій, коли я використовував localhost literal IP для тунелю. Distro: Ubuntu 16.04 LTS.


0

Причина, чому у мене було таке повідомлення, не є найпоширенішим, але його варто зазначити. Я створив за сценарієм список тунелів, і щоб забезпечити подання стовпців, я надрукував кожен останній байт на два байти. Коли я намагався відкрити тунель для переадресації на 192.168.66.08, це завжди не вдалося, оскільки "08" трактується gethostbyaddr як недійсне восьмеричне число :)


0

Здається, існує багато можливих першопричин цього повідомлення. У моєму випадку це була неможливість отримати доступ до віддаленого пристрою, оскільки я неправильно надав файл ключів .

-LОпція додає неявне SSH стрибок (ефективно використовуючи явний SSH хоста в якості сервера / скачки бастіону). Налагодити це може бути простіше, виконуючи стрибок явно і створивши оболонку входу для цільової машини за допомогою "proxycommand".

Як тільки це працює, ви можете зробити порт вперед на основі цільової машини localhost(якщо припустити, що він може увійти до себе):

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