Моя локальная сеть включает в себя настольный компьютер под управлением Linux (Debian Wheezy), MacBook с OS X Mavericks и модем-маршрутизатор; SSH с Linux-хостом и OS X-клиентом работает хорошо - нет проблем с подключением от клиента к хосту.
Кроме того, я попытался реализовать обратное - компьютер Linux также становится клиентом, а компьютер OS X также становится хостом. Но попытка ssh с клиента Linux на хост OS X приводит к
ssh_exchange_identification: Connection closed by remote host
Это происходит независимо от того, включен ли брандмауэр Mac.
Я пробовал многочисленные решения, предлагаемые поиском Google, в том числе на:
введите описание ссылки здесь введите описание ссылки здесь
(Система не позволяла мне публиковать больше ссылок.)
Я вполне уверен, что владельцы файлов, разрешения, конфигурации верны.
Один и тот же порт, скажем, 1234, настроен для ssh на каждом компьютере как хост и клиент; Команды netstat с обоих компьютеров показывают, что порт 1234 прослушивается. Ни DenyHosts, ни fail2ban не установлены.
На клиенте Linux /var/log/auth.log не выдает соответствующих сообщений.
Телнетинг от клиента к хосту дает
Connection closed by foreign host.
На хосте OS X во время попытки соединения ssh:
/var/log/appfirewall.log показывает
MacBook.local socketfilterfw[636] <Info>: sshd-keygen-wrapper: Allow TCP CONNECT (in:1 out:0
)
/var/log/system.log показывает
MacBook.local com.apple.preference.security.remoteservice[662]: nsc_smb XPC: handle_event error : < Connection invalid >
Кажется, что проблема связана с хостом OS X и что ключ к ее решению может быть в этих сообщениях, но я не смог найти полезную информацию.
На MacBook Системные настройки> Безопасность и конфиденциальность> Брандмауэр> Параметры брандмауэра «Удаленный вход в систему (SSH)» и «sshd-keygen-wrapper» установлены на «Разрешить входящие подключения».
«Удаленный вход» включен в «Системные настройки»> «Общий доступ».
Что может быть причиной проблемы с ssh-соединением и как ее решить?
Дополнительная информация с момента публикации
Спасибо за ответы, но я уже сделал все, что описано в ссылках, включил удаленный вход с моим именем пользователя (alex) и перезапустил ssh на обоих компьютерах после каждого изменения, касающегося ssh, после чего перезагрузил оба компьютера. Также несколько раз переустанавливал ssh на компьютер с Linux и несколько раз генерировал новые ключи на обоих компьютерах.
Возможно, мне следовало уточнить, что в ssh_config для обоих клиентов
PasswordAuthentication no
PubkeyAuthentication yes
Вот запрошенный вывод с хоста OS X: (не уверен, насколько он полезен, потому что я изменил порт ssh с 22 по умолчанию, скажем, 1234)
MacBook:~ alex$ ssh -vvv localhost
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug2: ssh_connect: needpriv 0
debug1: Connecting to localhost [::1] port 22.
debug1: connect to address ::1 port 22: Connection refused
debug1: Connecting to localhost [127.0.0.1] port 22.
debug1: connect to address 127.0.0.1 port 22: Connection refused
debug1: Connecting to localhost [fe80::1%lo0] port 22.
debug1: connect to address fe80::1%lo0 port 22: Connection refused
ssh: connect to host localhost port 22: Connection refused
Дополнительная уточняющая информация:
MacBook:~ alex$ ssh -vvv -p 1234 localhost
OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011
debug2: ssh_connect: needpriv 0
debug1: Connecting to localhost [::1] port 1234.
debug1: connect to address ::1 port 1234: Connection refused
debug1: Connecting to localhost [127.0.0.1] port 1234.
debug1: Connection established.
debug3: Incorrect RSA1 identifier
debug3: Could not load "/Users/alex/.ssh/id_rsa" as a RSA1 public key
debug1: identity file /Users/alex/.ssh/id_rsa type 1
debug1: identity file /Users/alex/.ssh/id_rsa-cert type -1
debug1: identity file /Users/alex/.ssh/id_dsa type -1
debug1: identity file /Users/alex/.ssh/id_dsa-cert type -1
debug1: Enabling compatibility mode for protocol 2.0
debug1: Local version string SSH-2.0-OpenSSH_6.2
ssh_exchange_identification: Connection closed by remote host
MacBook:~ alex$
Запрошенный вывод из клиента Linux:
alex@desktop:~$ ssh -v alex@MacBook.local
OpenSSH_6.0p1 Debian-4+deb7u2, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 20: Applying options for *
debug1: /etc/ssh/ssh_config line 102: Applying options for *
debug1: Connecting to MacBook.local [192.168.0.3] port 1234.
debug1: Connection established.
debug1: identity file /home/alex/.ssh/id_rsa type 1
debug1: Checking blacklist file /usr/share/ssh/blacklist.RSA-2048
debug1: Checking blacklist file /etc/ssh/blacklist.RSA-2048
debug1: identity file /home/alex/.ssh/id_rsa-cert type -1
ssh_exchange_identification: Connection closed by remote host
alex@desktop:~$
После долгих усилий, чтобы заставить ssh работать с Linux в качестве хоста и OS X в качестве клиента, я решил, что сделать обратное будет относительно просто. Может и так, но не так далеко! Дальнейшая помощь будет высоко ценится.
Lars
MacBook:~ alex$ sudo sshd -t
Password:
/etc/sshd_config: No such file or directory
MacBook:~ alex$
Файл sshd_config находится в /private /etc /ssh, так же как ssh_config и файлы ключей ssh_host.
Задача решена
Я поместил копию sshd_config в /private /etc и сделал sudo sshd -t
. Выходные данные дали ошибки форматирования, предполагающие ошибки стиля со ссылкой на rtf. Шрифт был Times. Я скопировал файл с компьютера Linux, и в процессе шрифт изменился с простого текста.
Я изменил файл sshd_config в /private /etc /ssh на обычный текст, переключил «Удаленный вход в систему» в «Системных настройках»> «Совместное использование на Mac», выполнил команду ssh из клиента Linux и смог подключиться к хосту OS X для первый раз.
Я раньше не сталкивался с командой sshd -t
, поэтому спасибо Ларсу за то, что он привлек мое внимание и указал мне правильное направление. Решение было действительно простым, но определить его не удалось.