SSH по втори частен път, докато VPN остава включен
SSH демон, вързан към адрес на тунел, няма да отговаря на нов частен интерфейс. Добавете връзката и проверете нова сесия, преди да затворите старата.
Една машина достига друга през VPN и сега някой иска същата обвивка през частна мрежа на доставчик. Маршрутът съществува, ping минава, а SSH все още отказва. Обичайната причина е, че демонът никога не е слушал на новия адрес, така че няма към какво да се свърже. Това е проблем с връзването на адрес, преди да е проблем със защитна стена.
Защо нов маршрут не създава нов слушател
Слушащият сокет се създава от процес, който посочва адресите, които ще приема. Маршрутът само казва на пакетите накъде да пътуват; той не създава слушател в местоназначението. Когато sshd е конфигуриран с един ListenAddress, връзките към всеки друг локален адрес се отказват, дори интерфейсът да е активен. Същото важи за socket unit, който притежава порта, затова първата проверка винаги е какво всъщност слуша.
Сравнете двата пътя по адрес на местоназначението, а не по име на интерфейс. Клиентът се свързва с адрес и този адрес трябва да е вързан, преди да има значение някое правило на защитната стена.
Избройте адресите и слушателите
Преди да редактирате каквото и да е, запишете адресите на хоста и сокетите, които съществуват сега.
ip -br addr
ss -ltnp | grep ':22'Списъкът с адреси показва кой частен адрес е реален и на кой интерфейс, докато списъкът със сокети показва дали нещо е вързано към него. Слушател на 0.0.0.0:22 вече приема всеки адрес, така че ново връзване не добавя нищо. Слушател на един конкретен адрес обяснява отказа веднага. Ако портът принадлежи на socket unit, а не на демона, конфигурацията на демона не е цялата история.
Добавете връзката и запазете старата
OpenSSH приема няколко записа ListenAddress, така че пътят през VPN може да остане, докато се добавя частният. Тествайте файла, преди да го презаредите.
sshd -t
systemctl reload sshdНеуспешен тест на конфигурацията оставя работещия демон непокътнат и точно това искате, докато сте свързани през пътя, който редактирате. Запазете съществуващия запис, добавете новия локален адрес и потвърдете, че услугата се презарежда, без да губи текущата сесия. При инсталации със socket активиране добавете адреса към socket unit вместо това и презаредете този unit. След това прочетете отново списъка със слушатели, защото връзване, което така и не се появи, означава, че е редактиран грешният компонент.
Проверете новата сесия, преди да затворите старата
Свържете се с новия адрес, докато оригиналната сесия е още отворена, и използвайте подробен изход, за да видите кой адрес и ключ са използвани. Дръжте оригиналната сесия отворена, докато проверката мине два пъти.
ssh -v [email protected]Прочетете редовете за отстраняване на грешки относно адреса на местоназначението и ключа на хоста, който е представен. Сверете отпечатъка на ключа на хоста със стойност, на която вече се доверявате, вместо да приемете непознат ключ, защото мрежата е описана като частна. Новото местоназначение се нуждае от собствен запис в known_hosts и това е очаквано. Старата сесия за управление трябва да се затвори само след като частният път работи.
SSH защитава транспорта, но не прави две мрежи еквивалентни сами по себе си. Решете дали доверието на частния транзит съответства на данните, преди да разчитате на него.