Я роблю багато між собою моїх комп'ютерів локальної мережі та двох моїх облікових записів веб-хостингу, тому я розібрав усі види шансів і закінчується SSH, включаючи проблеми аутентифікації, ssh -v
щоб побачити, де і що пішло не так.
Щойно вирішивши це питання і не тішившись відповідями, я хотів по-справжньому знати "чому" сам ...
Тригером для мого випадку є: встановлена нова ОС сервера на роботі та після встановлення пакета openssh-сервера на сервері роботи був створений новий набір ключів хоста. Раніше всі мої ОС на сервері були Ubuntu, і цього разу він змінився на Debian (і, підозрюю, є нюансована різниця у дозволах).
Коли всі ОС були Ubuntu, і я перевстановлював ОС сервера, після першого SSH в ньому я отримую таке попередження, яке я віддаю перевагу над тихим попередженням вище!
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that the RSA host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
06:ea:f1:f8:db:75:5c:0c:af:15:d7:99:2d:ef:08:2a.
Please contact your system administrator.
Add correct host key in /home/user/.ssh/known_hosts to get rid of this message.
Offending key in /home/user/.ssh/known_hosts:4
RSA host key for domain.com has changed and you have requested strict checking.
Host key verification failed.
Потім я відкриваю ~/.ssh/known_hostsна комп’ютері ініціюючи ssh, видаляю цей рядок, знову підключаюсь, і це відбувається:
chris@home ~ $ ssh work
The authenticity of host '[work]:11122 ([99.85.243.208]:11122)' can't be established.
ECDSA key fingerprint is 56:6d:13:be:fe:a0:29:ca:53:da:23:d6:1d:36:dd:c5.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[work]:11122 ([99.85.243.208]:11122)' (ECDSA) to the list of known hosts.
Linux rock 3.2.0-4-amd64 #1 SMP Debian 3.2.51-1 x86_64
Це трохи про: 11122 - номер порту, з якого я маршрутом SSH пройшов через брандмауер
Я перевірив резервні копії з колишнього сервера Ubuntu і відрізнявся від моєї нової установки Debian:
Ubuntu: Debian:
# Package generated configuration file # Package generated configuration file
# See the sshd(8) manpage for details # See the sshd_config(5) manpage for details
# What ports, IPs and protocols we listen for # What ports, IPs and protocols we listen for
Port 22 Port 22
# Use these options to restrict which interface # Use these options to restrict which interfaces
#ListenAddress :: #ListenAddress ::
#ListenAddress 0.0.0.0 #ListenAddress 0.0.0.0
Protocol 2 Protocol 2
# HostKeys for protocol version 2 # HostKeys for protocol version 2
HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key HostKey /etc/ssh/ssh_host_dsa_key
------------------------------------------------ HostKey /etc/ssh/ssh_host_ecdsa_key
#Privilege Separation is turned on for security #Privilege Separation is turned on for security
UsePrivilegeSeparation yes UsePrivilegeSeparation yes
Так так, швидше за все, хост нещодавно почав використовувати клавіші ecdsa, які, грунтуючись на змінах Ubuntu останнім часом, я буду звинувачувати в оновленні. Відхилення Ubuntu від надійної ОС Linux, на яку я розраховував, тому я цього разу встановив Debian.
Я читав security.SE q / a на ecdsa і вже видалив цю лінію з sshd_config
мого нового сервера Debian. (і побіг service ssh restart
)
The ECDSA host key for server has changed
. Мій спосіб - видалити пов'язаний рядок кешу з домену в~/.ssh/known_hosts
. Потім ssh працює.