Чи повідомляють протоколи SSH або FTP серверу, до якого домену я намагаюся підключитися?


25

Використовуючи команди sshабо ftpкоманди з оболонки Bash, чи сервер, до якого я підключаюсь, дізнався про використовуване доменне ім’я? Я розумію, що доменне ім’я локально переводиться на IP-адресу через DNS. У HTTP, після цього, серверу повідомляється також оригінальне доменне ім’я для того, щоб він обслуговував правильну сторінку або представляв правильний сервер TLS (SNI).

host serverfault.com
GET /

Чи відбувається подібне явище при підключенні до sshабо ftp?

Я запитую, тому що я намагаюся ввійти в сервер (веб-хостинг GoDaddy), який очікує доменне ім’я, але не впускає мене, коли я намагаюся підключитися через, user@IPaddressоскільки DNS ще не переміщений на IP-адресу GoDaddy.


У вас є .ssh/configконкретне ім'я хоста (або IP-адреса)? Яку помилку ви отримаєте? (Гм, це підтримка, але не до мети відповіді на питання ...)
Андреас Крей

Просто загальне Login authentication failedдля FTP та Permission deniedSSH. Фактичне підключення нормально, і я вчетверо перевірив облікові дані для входу.
dotancohen

Відповіді:


25

Ні, клієнти SSH не передають на сервер ім'я DNS, до якого ви підключились.
Як ви сказали правильно, ім'я визначається локально на IP-адресу.

Схоже, я помилявся про FTP.
Детальну інформацію див. В іншій відповіді.


5
Це вже не вірно для FTP. Дивіться мою відповідь
Мартін Прикрил

Цікаво, я цього не знав. Я відредагував свою відповідь. Спасибі!
факер

Насправді станом на 2015 рік неопрацьована відповідь у більшості випадків все ще правильна. Однак це може змінитися в найближчі кілька років.
dotancohen

Мені цікаво, скільки клієнтів це ще підтримують. У будь-якому випадку ваша відповідь правильніша.
факер

@faker Я додав мало інформації про підтримку на стороні клієнта, яку я знаю. Пізніше можна зробити додаткові дослідження.
Мартін Прикрил

34

Протокол SSH / SFTP не має механізму надання хосту серверу.

Була дискусія щодо додавання цієї функціональності до OpenSSH, див. "Віртуальний хост" для ssh .


Протокол FTP робить мати HOSTкоманду, яка є еквівалентно HTTP Hostзаголовка. Він заданий відносно новим RFC 7151 . RFC був опублікований у березні 2014 року (хоча перший проект - з 2007 року). Як такий, він ще не підтримується повсюдно.

На стороні сервера його підтримують IIS (RFC спонсорується Microsoft) та ProFTPD (з 1.3.6rc1). Він не підтримується іншими поширеними серверами Unix FTP, такими як Pure-FTPd або vsftpd.

На стороні клієнта його підтримує (мій) WinSCP . Це не підтримується FileZilla, оскільки його автор проти цієї ідеї , а також CyberDuck. Я не знаю про інших.


Дякую, це буде важливим питанням у найближчі кілька років, коли люди стикаються з цією проблемою та гуглюють це питання.
dotancohen

1
Це приємно знати. Я б хотів, щоб щось подібне існувало і для ssh, тому що у мене є необхідність в інтерфейсі, який може відправляти з'єднання ssh, зроблені на одному IP-адресі на різні сервери на основі імені хоста. Але всі мої попередні дослідження згодні з вашим висновком, що він не існує для ssh, і його не можна легко додати до протоколу.
kasperd

@kasperd, ви можете використовувати різні номери портів для різних з'єднань. Або ви могли це зробити на основі імені користувача.
AE

@AE Жоден підхід не працював для мого використання. На той момент, коли мені потрібно вирішити, на який сервер надіслати з'єднання, клієнт ще не надіслав ім'я користувача. (Більше того, я впевнений, що ім'я користувача надсилається лише зашифрованим, і я не знаю, як змінити ssh-з'єднання для вилучення імені користувача.) Номер порту також не буде працювати, тому що мій фронтенд фактично здійснює пошук DNS імені хоста для того, щоб знайти бекенд. (Фронтенд - це подвійний стек, у
базових скриньках

2
@kasperd Я додав посилання на тему списку розсилки OpenSSH про додавання цього до SSH.
Мартін Прикрил
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.