Как компютърът ви може да даде достъп до себе си през тунела с помощта на ssh, autossh, autosshd

Тя ще обясни подробно как да се даде за някого достъп до вашия (мобилен) компютър през тунела.

(Понякога в ситуации като тази хората използват собствения TeamViewer. Можете да го направите и да имате всичко под свой контрол.)

Тунелът (всъщност пренасочването на един порт) ще бъде създаден с помощта на ssh (openssh-client), autossh, autosshd. Това е основната задача, решението на която е описано в тази история.

  • за някого този урок ще каже Аз за простота.
  • ssh в тази история ще се появи и в друга роля: като средство за влизане за мен на вашия компютър (от ваша страна това се осигурява от openssh-сървър). Но тези две роли са независими една от друга.
  • Смята се, че имам повече опит в администрацията, така че инструкциите са подробни за вас, а за мен - кратки, схематични.
  • Ще трябва да ви информирам и вие ще замените конкретни стойности за моите данни: >>, >>, >>, >>. (Пример за този урок с нечия конкретни данни: Член: IvanZakharyaschev/Как да ми предоставите ssh достъп до вашия (мобилен) компютър.)

Съдържание

Тунел [редактиране]

Конфигурация на тунела [редактиране]

ти и аз: вашето име [редактиране]

  • Ще се договорим за име на вашия компютър (с което ще водя записи). Нека го обозначим ИМЕ; по-нататък вместо ИМЕ ние ще заменим това избрано ваше име.

вие: вашият ключ, който ще позволя да тунелирам с мен [редактиране]

(направено от обикновен потребител, а не от root)

/.ssh/id_for_tun_ИМЕ -C 'тунел, търсен от ИМЕ Кажете ми неговата отворена (така наречената „публична“) част: котка

от моя страна: избор на потребител и порт за тунела [редактиране]

  • useradd -m tun_ИМЕ
  • Позволете ми да вляза с вашия ключ: котка >>

tun_ИМЕ/.ssh/authorized_keys (Файл за заглушаване

tun_ИМЕ/.ssh/authorized_keys вече ще са след useradd.)

  • ДА НАПРАВЯ: Също така би било хубаво да забраните на този специален потребител (за обслужване на тунела от моя страна) да изпълнява всякакви команди от ssh, да стартира командна обвивка, да влиза в профила си за цели, различни от тунела.
  • Избирам номер на порт за себе си и ви го казвам. (Нека се обозначава PORT_NAME.) Възможна конфигурация, когато портът е избран автоматично (както е в конфигурацията по-долу); тогава не е необходимо предварително да се съгласувате с номера на порта.
  • вие: запазете конфигурацията [редактиране]

    (прави същия нормален потребител, а не root)

    /.ssh/config config (напр. cat >>

    /.ssh/config - добавя се в края на файла; след това Ctrl-D), за което се разбрахме:

    0 като номер на порт означава, че портът ще бъде взет автоматично (и отпечатан от ssh клиента - вижте командата по-долу). В този случай не е нужно предварително да се съгласявате с номера на порта.

    (ИМЕ трябва да бъде заменено с името, определено за вас.)

    (Вместо >>_tunnel можете да измислите всяко друго удобно обозначение за кого препращате тунела и да го използвате в командите по-долу.)

    us: видим ли е вашият специален порт отвън [редактиране]

    Позволете ми да напомня на себе си и на друга версия на реда от тази конфигурация:

    или (за ръчен избор на номера на порта)

    -- тази опция е необходима, ако вие и аз се съгласим, че присвоеният ви порт от моя страна трябва да слуша на всички мрежови интерфейси на моя компютър (и се вижда от локалните ми мрежи). Тогава мога лесно да го препращам и излизам изцяло в Интернет.

    Трябва да активирам следната опция в/etc/openssh/sshd_config [2] за слушане на всички интерфейси за работа:

    Стартиране на тунел [редактиране]

    вие: инициирайте тунела (когато е необходимо) [редактиране]

    (прави същия нормален потребител, а не root)

    (там ще бъде записан номерът на специалния порт за мен, ако решим да конфигурираме тунела с автоматично разпределение на порта от моя страна. Можете да ми го кажете - той ще бъде посочен PORT_NAME.)

    Всъщност в нашия случай би било „по-правилно“ да се даде команда с опция:

    -- опцията -N казва на ssh клиента да пренасочва само портове (т.е. да създаде "тунел"), но да не ви дава черупката на друг компютър (моя, към който се свързвате). Мога просто да забраня на специалния потребител, при който тунелът се обслужва от моя страна, да работи с командната обвивка (тъй като изпълнението на команди на моя компютър не е нашата цел).

    От ваша страна: вход за мен [редактиране]

    (По-долу са най-често срещаните стъпки за настройване на потребител за някого.)

    потребител за мен и ключ [редактиране]

    (Можете да разберете кое потребителско име предпочитам; тук: >>.)

    • useradd -G колело -m >> (групата колела е необходима, ако трябва да бъда администратор)
    • Дайте ми root паролата, когато трябва да администрирам, или ме добавете към/etc/sudoers. [3]
    • котка >>

    Работи ли вашият ssh сървър? [редактиране]

    • услуга sshd статус
    • Ако не, активирайте: service sshd start
    • Ако нямате този пакет, инсталирайте: apt-get install openssh-server
    • Активиране за постоянно: chkconfig sshd включен
    • Вижте дали винаги започва сега: chkconfig sshd [4]

    Забележка: Вашият ssh сървър защитен ли е? [редактиране]

    Всъщност, ако се съгласим, че всеки от Интернет трябва да бъде допуснат до пристанището, което е определено за вас от Интернет, тогава трябва да се притесняваме, че не можете да бъдете атакувани от груба сила на пароли за вашите потребители, т.е. в настройките на ssh-сървъра деактивирайте влизането с парола (влизането с ключ ще остане). (ДА НАПРАВЯ: пиши специално!)

    Сесия за отдалечена работа/администрация [редактиране]

    аз: отивам [редактиране]

    • ssh 0 -l >> -стр PORT_NAME -v
    • su - или sudo su - (използвам съответно вашата коренна парола или потребителска парола >>, които сте инсталирали - трябва да ми кажете за тях)

    Автоматичен тунел [редактиране]

    За повече удобство, нека се погрижим за автоматичната поддръжка на тунела (посредством autossh и "увиване" около него - autosshd).

    Предимството на autossh пред ssh е, че той ще рестартира ssh с тунел в случай на проблеми. (Няма да е необходимо да преиздавате ръчно тази команда.)

    Предимството на autosshd е, че тунелът ще бъде стартиран от системната услуга, т.е. всеки път, когато стартирате системата си, и не е нужно да се притеснявате за това и сами да давате командата. Също така може да бъде полезно, ако експериментирам с рестартиране на вашата система от разстояние. (Системната услуга, разбира се, може да бъде деактивирана по-късно, ако желаете.)

    Ето някои от все по-сложните подобрения:

    вие: направете autossh вместо ssh [редактиране]

    (вашият редовен потребител го прави)

    (Пакетът autossh трябва да бъде инсталиран от вашия администратор, например по следния начин: apt-get install autossh.)

    Autossh изисква опцията -M, която дава порт за наблюдение на връзката, но документацията /usr/share/doc/autossh-1.4c/README казва, че модерните ssh могат да го направят сами (вижте ServerAliveInterval, ServerAliveInterval опции). -M 0 просто деактивира това наблюдение.

    вие: оставете специалния потребител _autossh да се справи с тунела [редактиране]

    • предварително инсталирайте autosshd (версията на пакета в хранилището на пакети Sisyphus може да се е променила, разбира се - вижте връзките за изтегляне):

    (По-добре да инсталирам от архива точно версията, която „одобрих“, т.е. с която проверих тази инструкция: apt-get install ftp://ftp.altlinux.org/pub/distributions/archive/sisyphus/date/ 2014/01/31/noarch/RPMS.classic/autosshd-0.0.2-alt8.noarch.rpm! За да не презапишете конкретна версия при актуализиране, можете да добавите реда RPM: Hold < "^autosshd"; >; в конфигурацията на APT, например в отделен нов файл /etc/apt/apt.conf.d/autosshd-tested.conf.)

    Ще бъде създаден специален потребител _autossh с домашната директория/var/lib/autosshd /. [пет]

      прехвърлете настройките на ssh тунел на този специален потребител (ВИЕ -- вашето редовно потребителско име):
        cp -v

      _autossh/.ssh/config chown _autossh: _autossh -R

      Сега вашата нормална команда за иницииране на тунел (ssh -N >>_tunnel) може да бъде изпълнен като нов специален потребител; така ще бъдете по-сигурни от атаки от мрежата и от грешки в ssh (личните ви данни, с които работите като обикновен потребител, както и цялата система, в случай че можете да превключите към администратора - ако сте в колелото група). Специалният потребител _autossh обаче е конфигуриран така, че е невъзможно да "влезете" в системата под него, така че просто проверете и стартирайте ssh -N сами. >>_tunnel, прави, кажи, su - _autossh ще се провали. Можете да разгледате настройките на ssh, които направихме за потребителя _autossh, като основа за autosshd (или като пример, че тези настройки могат да бъдат направени от някой друг потребител и това може да бъде полезно).

      вие: настройка autosshd [редактиране]

      • настройки във файл /etc/autossh.d/>>_tunnel.conf (необходим е ненулев AUTOSSH_PORT! [6] и опциите (auto) ssh трябва да са -N!):

      • за удобство /var/lib/autosshd/.ssh/config предлага да зададете фиксиран порт от моя страна -- PORT_NAME, за което се договорихме (т.е. което съм разпределил и ви информирах); вместо

      например нещо като (Внимание: това изобщо не е същият порт като AUTOSSH_PORT, който се появи точно като част от вътрешната кухня, несъвършен):

      • проверка дали конфигурираната услуга се стартира - както обикновено:
        • стартирате: услуга autosshd старт
        • поглеждате състоянието му: услуга autosshd статус
        • проверявам: ssh 0 -p PORT_NAME>> (Мога също да напиша тези параметри в раздел като "Хост ИМЕ"във вашия

        /.ssh/config)

    • включете услугата за всяко стартиране на системата - както обикновено:
      • вече е активиран: chkconfig --list autosshd
      • нека бъде включен: chkconfig autosshd включен
      • е: chkconfig - списък autosshd активиран сега

    Бележки (относно специфични характеристики на системите) [редактиране]

    /.ssh/config; или например emacs - пакет с него може да бъде доставен, ако не си струва. ↑ човек ssh_config:

    Ако bind_address не е посочен, по подразбиране се свързва само с адреси за обратна връзка. Ако bind_address е ‘*’ или празен низ, тогава препращането се изисква да слуша на всички интерфейси. Посочването на отдалечен bind_address ще успее само ако е активирана опцията GatewayPorts на сървъра (вижте sshd_config (5)).

  • ↑ Всъщност, например, в ALTLinux p7, потребителите от групата колела вече могат да използват sudo. Но за да използвате sudo, трябва да имате собствена парола. Можете да го инсталирате: passwd >>; или позволете ми да го направя, когато вляза и стана администратор чрез su -, след като научихте от вас вашата root парола.
  • ↑ За системи с добър стар SysV init, можете също да използвате chkconfig --list sshd; а за новомоден systemd (например в ALTLinux p7) тази команда ще даде информация като тази:
  • ↑ След инсталиране на autosshd-0.0.2-alt3 виждаме:
  • ↑ Въпреки че самият autossh може да работи с модерен ssh с -M 0, но autosshd е проектиран по такъв начин, че да проследява процеса на autossh по номера на този посочен порт (и след това да го контролира).