Назад | Перейти на главную страницу

Подключитесь к sshd по прямой ссылке на второй сетевой адаптер

Так обстоят дела по умолчанию. Ничего не настраивал. Мой debian сервер имеет сетевое соединение на eno2 с ip 192.168.1.40. Интернет, sshd, все отлично работает.

Теперь я добавил второе подключение к eno4. Это прямая ссылка (без маршрутизатора или коммутатора) на другой компьютер для целей управления. Назовем этого одного клиента. На клиенте это автоматически отображалось как 10.0.0.2. Я могу пинговать с клиента.

На сервере не был назначен IP-адрес. Но я мог легко получить netcat от клиента, потому что мне нужен был только IP-адрес клиента.

Например.:

Клиент:

$ echo "Some big ZFS pool here" | nc -l -p 5555

Сервер:

$ nc -w 10 10.0.0.2 5555 | cat
Some big ZFS pool here

Теперь я хочу подключиться к sshd на сервере, используя это соединение.

Однако в подключении отказано. Я могу подключиться через локальную сеть и Интернет по умолчанию eno2 192.168.1.40 соединение просто отлично. Только не по этой прямой ссылке.

По умолчанию sshd слушает все входящие соединения на всех интерфейсах. Возможно eno4 просто нужен IPv4-адрес. Так я и сделал:

$ sudo ip addr add 10.0.0.1/8 dev eno4
$ ip addr show eno4
5: eno4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 0a:a5:6a:1b:a2:22 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/8 scope global eno4
       valid_lft forever preferred_lft forever

Я могу пинговать 10.0.0.1 с сервера. Я могу netcat. Однако я не могу использовать ssh.

Есть много длинных длинных чтений с много работы над всеми видами таблиц маршрутизации и прочим в Интернете. Но я действительно ничего не знаю о маршрутизации, это необходимость, альтернативы, и, наверное, я бы потратил целый день на ее тестирование. Но действительно ли это так сложно? Я могу пинговать. Я могу netcat. Каков самый простой способ получить ssh работать над интерфейсом? Может быть, даже временно, так что я могу все сделать сейчас?

И, при желании, какое постоянное решение лучше?

Обратите внимание, что sshd якобы уже все слушает, и я не хочу, чтобы он переставал слушать. Я бы предпочел не изменять конфигурацию sshd и даже не перезапускать sshd, потому что сервер активно используется.

Единственное, что изначально изменилось на этом сервере, это порт:

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

Port 22222
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

... snip ...

По-видимому, после добавления IP-адреса это действительно работает. Я сделал ошибку в ssh_config где я предполагал, что более поздние записи отменяют более ранние записи, но это наоборот!

Упрощенный пример; этот не работай:

Host SomeServer
    Hostname 192.168.1.40
    User admin
    Port 22222
Host SomeServer
    # Some temporary overwrite parameters
    Hostname 10.0.0.1

Однако это делает работай:

Host SomeServer
    # Some temporary overwrite parameters
    Hostname 10.0.0.1
Host SomeServer
    Hostname 192.168.1.40
    User admin
    Port 22222

Я чувствую себя немного глупо и не знаю, как мне поступить в этом случае:

  1. Проголосуйте за удаление моего вопроса
  2. Обновите мой вопрос и объясните, что он действительно работает так, как ожидалось
  3. Ответьте на мой вопрос с этим уточнением

Я выбрал последнее, чтобы закрыть дело и извиниться за неразрешимый вопрос (потому что на самом деле это уже сработало).