Я использую Ubuntu 11.04 в качестве настольной ОС. У меня установлен openssh-сервер и я могу подключиться к нему с того же компьютера. Я хочу использовать его для создания подключения с другого компьютера (в той же локальной сети) к этому. По какой-то причине нет ответа. Ufw неактивен. Здесь работает другой компьютер с такой же настройкой. На компьютере есть только один сетевой адаптер.

Машина A (Ubuntu 11.04)

  • IP: 192.168.1.22
  • Установленный SSH-сервер
  • UFW статус: неактивен
  • кажется, sshd связывает все интерфейсы
  • пинг с машины Б на эту машину работает
  • Попробовал ssh root @ localhost, просто чтобы посмотреть, работает ли это, что имеет место

Результаты Netstat Машина A

unix 2 [ ACC ] STREAM LISTENING 13480 2275/ssh-agent /tmp/ssh-BKiZJjfU2214/agent.2214
unix 2 [ ACC ] STREAM LISTENING 13651 2195/gnome-keyring- /tmp/keyring-VvDtwo/ssh

Журнал результатов

09/02/11 10:25:26 AM    ubuntu-a    kernel  [ 5564.741977] Inbound IN=eth0 OUT= MAC=xxxx SRC=192.168.1.44 DST=192.168.1.22 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=45506 DF PROTO=TCP SPT=49089 DPT=22 WINDOW=14600 RES=0x00 SYN URGP=0

Машина B (Ubuntu 11.04)

  • ip: 192.168.1.33
  • установленный ssh-сервер
  • попытался войти с машины A, которая работает
  • попытался войти в систему на машине A, что привело к таймауту соединения

Что мне здесь не хватает?

3 ответа3

1

Это, конечно, не создает сцену, в которой вы можете установить SSH-соединение с вашего собственного компьютера, а не с другого компьютера в той же сети после установки openssh-сервера (при условии, что вы не изменили настройки по умолчанию и нет волшебства при остановке сети соединение от прохождения).

Первое, что я хотел бы сделать, это убедиться, что SSH прослушивает все адаптеры Ethernet (а не только локальный). Вы можете сделать это с помощью netstat , перечисляя номера, а не имена служб (-n), используя TCP (-t), который прослушивает (-l), и передает результаты в поиск grep :22 - это порт, который SSH прослушивает по умолчанию. :

netstat -ntl | grep :22

Вы должны получить следующий результат:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN 

Если вы не получите такой результат, возможно, это ваша первая проблема. Проверка того, что SSH-сервер действительно запущен (перезапустите с помощью sudo server ssh restart), это первое, что я бы попробовал (но, вероятно, это не тот случай, когда вы можете подключиться с локального хоста). Второе, на что я хотел бы обратить внимание, - это конфигурация сервера SSH.

Если это результат, полученный от netstat то я могу предположить, что SSH-сервер прослушивает все адаптеры Ethernet, что означает, что соединения с другим ПК в той же сети должны работать.

Следующая вещь, на которую я посмотрю, - это IP-адрес ПК, чтобы убедиться, что я указываю правильный IP-адрес с ПК, с которого пытаюсь подключиться. ifconfig должен предоставить мне информацию, которая мне нужна.

На моем компьютере ifconfig дает мне:

eth0      Link encap:Ethernet  HWaddr 00:26:9e:e8:cf:31  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:42 Base address:0xc000 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:4239 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4239 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1341552 (1.3 MB)  TX bytes:1341552 (1.3 MB)

wlan0     Link encap:Ethernet  HWaddr c4:17:fe:3c:aa:d7  
          inet addr:192.168.1.66  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::c617:feff:fe3c:aad7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:54149 errors:0 dropped:0 overruns:0 frame:0
          TX packets:24983 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:29122251 (29.1 MB)  TX bytes:4707094 (4.7 MB)

Это показывает, что у моего eth0 нет IP-адреса (потому что он не подключен) и что у моего беспроводного адаптера wlan0 есть IP-адрес 192.168.1.66 . Это IP-адрес, который мне нужно использовать для подключения с другого компьютера в той же сети.

На другом ПК, если я вошел в систему с тем же именем пользователя, что и на "проблемном" ПК, я бы подключился с терминала с помощью:

ssh 192.168.1.66

Все еще не работает?

Следующее, что нужно попробовать, это проверить, существует ли какая-либо сетевая связь между ПК. Попытка пинговать "проблемный" ПК с другого. Если вы не можете получить ответ на эхо-запрос, возможно, это не проблема SSH, а проблема сети.

Еще одна вещь, которую вы могли бы попробовать ... Несколько месяцев назад у меня возникла проблема при попытке печати на моем беспроводном принтере с моего ноутбука. Оказалось, что это беспроводной маршрутизатор, вызывающий проблему. После перезагрузки маршрутизатора печать снова заработала. Вы пробовали перезагрузить свой роутер?

Все еще не повезло?

Хорошо, теперь мы попробуем sudo tcpdump на машине A. Мы хотим сбросить все пакеты с IP-адресом источника 192.168.1.33 (машина B), которые поступают на порт 22 через eth0 (при условии, что ваш сетевой адаптер - eth0):

sudo tcpdump -i eth0 src host 192.168.1.33 and dst port 22

Сейчас на машине Б попробую:

SSH 192.168.1.22

Производит ли tcpdump какой-либо вывод?

Мы также можем попробовать telnet с машины B, чтобы попытаться подключиться к порту 22 на машине A:

telnet 192.168.1.22 22

Это должно произвести что-то вроде:

user@machineb:~$ telnet 192.168.1.22 22
Trying 192.168.1.22...
Connected to 192.168.1.22.
Escape character is '^]'.
SSH-2.0-OpenSSH_5.8p1 Debian-1ubuntu3

Могут ли другие компьютеры подключаться к машине A?

Может ли машина B подключаться к другим компьютерам?

0

Выполните tcpdump -nvvvli ethX port 22 or icmp на Ubuntu 11.04 (замените ethX на имя вашего сетевого устройства, например, eth0). Посмотрите, попадает ли соединение по порту 22 (ssh) и правильно ли оно отвечает (не ICMP и не TCP RST).

0

Запустите это:

netstat -lepn | grep ssh

В результатах вы видите, связывается ли sshd со всеми интерфейсами или со всеми (0.0.0.0). Если он привязан только к локальному интерфейсу, измените эти настройки в /etc /sshd_config:

ListenAddress ::
ListenAddress 0.0.0.0

Если вы не видите таких строк, значит, ваш sshd не запущен:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      0          8627        674/sshd        
tcp6       0      0 :::22                   :::*                    LISTEN      0          8629        674/sshd        

Если это так, вы можете попробовать запустить его с:

start ssh

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .