Что такое SSH-доступ на хостинге

Подключив поддержку SSH, пользователи, имеющие опыт работы с операционными системами семейства UNIX, могут удаленно подключиться к серверу в консольном режиме и использовать такие утилиты как mc, mysql и т. п.

Вход в систему

После успешной аутентификации пользователя выполняет следующие действия:

  • Если регистрация в системе произведена на терминале (tty) и не указана никакая команда, то отображается время последнего входа в систему и содержимое файла /etc/motd (если только это не отключено в файле конфигурации или ~/.hushlogin).
  • Если регистрация в системе произведена на терминале, записывается время регистрации.
  • Проверяется /etc/nologin, если он присутствует, выводится его содержимое и завершается работу (исключение — root).
  • Осуществляется переход к выполнению с правами обычного пользователя.
  • Устанавливаются значения основных переменных среды.
  • Интерпретируется файл ~/.ssh/environment, если таковой имеется, и пользователям разрешено изменять среду.
  • Переходит в домашний каталог пользователя.
  • Если имеется файл ~/.ssh/rc, то производится его выполнение, а если нет и имеется /etc/ssh/sshrc, то выполняется он, в противном случае выполняется   Файлам ‘rc’ на стандартный ввод передаётся протокол аутентификации Х11 и cookie.
  • Запускается оболочка пользователя или выполняется указанная команда.

SSH-клиенты для Windows — программы и online — аддоны

PuTTY — клиент для подключения к SSH, Telnet, SCP, SFTP.

PuTTY, пожалуй, один из самых популярных SSH-клиентов для Windows. Популярен он за свою функциональность, быстроту работы, простоту использования. И он бесплатный! Скачайте этот клиент и установите его.

В стартовом окне приветствия сразу можно ввести все параметры подключения, запустить соединение и сразу же приступить к работе. Можно сохранить это подключение на будущее, чтобы каждый раз не вводить все данные заново. Это удобно.

WinSCP

WinSCP — еще одна довольно популярная программа-клиент. С помощью нее можно установить зашифрованное соединение к FTP-серверу удаленной машины путем туннелирования трафика через протокол SSH.

Работает быстро. Интерфейс похож на PuTTY. Ничего сверхъестественного, поэтому разобраться с подключением будет не сложно. Все то же самое: хост, порт, имя пользователя и пароль — все, что требуется для подключения и дальнейшего управления файловой структурой сервера.

Xshell

Xshell — бесплатный для некоммерческого использования клиент.

Преимущества программы: поддержка локальных команд, управление файлами и туннелирование. Имеет простой командный интерфейс. Помимо SSH-протокола поддерживает и другие: RLOGIN, SFTP, TELNET, SERIAL. Для профессиональных пользователей есть куча дополнительных настроек: динамическое перенаправление портов, поддержка сценариев, трассировка, функции настройки безопасности.

Надежный виртуальный хостинг с круглосуточной техподдержкой — скидки до 30%!

Онлайн расширение FireSSH для Firefox

Плагин для одного из популярных браузеров Mozilla Firefox.

Чтобы запустить клиент зайдите в «Меню», затем «Разработка», пункт «FireSSH». Ваш клиент запущен. Вводите ваши данные для подключения во вкладке «Main» и приступайте к работе. Во вкладке «Advanced» можно указать дополнительные параметры SSH-туннелирования. Работает эта штука в режиме онлайн на всех ОС, на которые можно поставить этот браузер.

Secure Shell — хороший плагин для Google Chrome

Для браузера Google Chrome есть свой плагин ssh-клиент. Называется он Secure Shell.

Установите это расширение в свой браузер. После установки щелкните на пиктограмку, клиент откроется в новой вкладке. В этом окне вы настраиваете параметры подключения и устанавливаете соединение с удаленным сервером. Этот клиент также будет работать в любой ОС, для которой можно установить данный браузер.

VPS SSD хостинг — выбор профессионалов. Только сертифицированное серверное оборудование!

OpenSSH для Cygwin Terminal

Для Windows существует пакет UNIX-подобных утилит. Cygwin — один из таких пакетов. А OpenSSH может быть установлена вместе с ним. Попробуйте эту утилиту, возможно она вам понравится!

В чем ее преимущество? Вы можете использовать команды с синтаксисом для UNIX-платформ в Windows среде. Это удобно для пользователя, который не хочет изучать дополнительные команды для Windows. Установите пакет Cygwin. Во время установки вы можете выбрать установку только отдельно OpenSSH. После установки запускайте утилиту Cygwin Terminal и наслаждайтесь простым консольным терминалом!

Конфигурационные файлы первоначальной настройки и порт SSH

  • /etc/ssh/sshd_config — конфигурационный файл сервера OpenSSH
  • /etc/ssh/ssh_config — конфигурационный файл клиентской части OpenSSH
  • ~/.ssh/ — конфигурационная директория пользователей ssh
  • ~/.ssh/authorized_keys или ~/.ssh/authorized_keys2 — список открытых ключей (RSA или DSA), которыми можно пользоваться при входе в систему по регистрационным записям пользователей
  • /etc/nologin — если этот файл существует, то демон sshd не даст никому из пользователей доступ, кроме пользователя root
  • /etc/hosts.allow (доступ разрешен) и /etc/hosts.deny(доступ запрещен): здесь находятся списки управления доступом, которые должны использоваться tcp-wrapper-ами .
  • SSH порт, используемый по умолчанию: : TCP 22

Сессия SSH в действии

Подключение по SSH к хосту в VPN

VPN, то есть виртуальная частная сеть, состоит из подключённых к ней хостов, которые могут быть разбросаны по всему миру, но которые благодаря VPN объеденены в одну локальную сеть, внутри которой каждый узел может связываться с другим по локальному IP адресу. Причём соединения надёжно зашифрованы и сторонние лица не смогут узнать, какой именно трафик передаётся внутри VPN.

Предположим, я хочу подключиться по SSH к компьютеру, который находится в VPN к которой я также подключён. В этом случае я могу подключиться указав IP интересующего меня компьютера в VPN сети, например:

ssh [email protected]

Некоторую дополнительную информацию смотрите .

Аутентификация

Служба OpenSSH SSH поддерживает версии протокола SSH 1 и 2. Запретить использование одного из протоколов можно, указав в параметре Protocol файла sshd_config. Протокол 2 поддерживает ключи RSA и DSA; протокол 1 поддерживает только ключи RSA. Независимо от протокола, каждый подключающийся хост имеет собственный, обычно 2048-битный идентифицирующий его ключ.

Для протокола версии 1 подтверждение субъекта сервера обеспечивается 768-битным ключом, который генерируется при запуске сервера. Ключ генерируется заново каждый час, при условии его использования, и не хранится на диске. При получении запроса на подключение со стороны клиента служба посылает в ответ свой открытый ключ и свои ключи. Клиент сравнивает ключ хоста RSA со своими данными, чтобы убедиться в том, что это тот же сервер. Затем клиент генерирует 256-битное произвольное число, шифрует его при помощи обоих ключей (своего и сервера) и отправляет результат серверу. Это число становится ключом сеанса, и с его помощью выполняется кодирование всей последующих данных, по согласованному методу — Blowfish или 3DES (клиент выбирает метод из предложенных сервером). В настоящее время по умолчанию используется 3DES.

Для протокола версии 2 подтверждение субъекта сервера обеспечивается по схеме Диффи—Хеллмана, в результате которой также получается общий ключ сеанса. Дальнейший обмен данными шифруется симметричным кодом, 128-битным AES, Blowfish, 3DES, CAST128, Arcfour, 192-битным AES или 256-битным AES, который выбирает клиент из предложенных сервером. Кроме того, целостность передаваемых данных обеспечивается кодом подтверждения подлинности сообщения (hmac-sha1 или hmac-md5).

Далее, сервер и клиент переходят в режим аутентификации. Клиент пытается аутентифицировать себя по своему хосту, открытому ключу, паролю или с помощью беспарольного механизма («вызов-ответ»).

Независимо от типа аутентификации служба проверяет доступность соответствующей учётной записи в системе. Так, она может быть заблокирована посредством добавления её в параметр DenyUsers или её группы в DenyGroups. Механизм общесистемной блокировки учётной записи выполняется разными системами по-разному. Одни системы ведут собственную базу данных учётных записей (AIX), другие вносят соответствующие изменения в поля файла passwd (‘*LK*’ — Solaris и UnixWare, ‘*’ — на HP-UX, ‘Nologin’ — Tru64, ‘*LOCKED*’ во FreeBSD и ‘!!’ в GNU/Linux). Для запрета только аутентификации по паролю укажите в файле passwd ‘NP’ или ‘*NP*’.

После успешной аутентификации себя клиентом связь переходит в режим подготовки сеанса. В этот момент клиент может запросить такие вещи, как выделение псевдо-терминала, перенаправление соединения Х11, перенаправление соединения TCP/IP или перенаправление соединения агента аутентификации через защищённый канал.

Наконец, клиент запрашивает оболочку или выполнение команды, после чего стороны входят в режим сеанса. В этом режиме, каждая из сторон в любой момент может пересылать данные и эти данные будут переданы оболочке или команде на стороне сервера и на пользовательский терминал соответственно.

По завершении работы пользовательской программы и закрытии всех перенаправленных Х11 и других соединений сервер посылает клиенту команду со статусом выхода и сеанс завершается.

Правильный вариант — ssh туннель

Наиболее правильным вариантом будет создание аналога VPN для бедных с использованием SSH и некоего виртуального сервера, который у вас конечно же есть. Если ещё нет — можно купить его за 5$/месяц в DigitalOcean или за 200 рублей/месяц в VScale. Можно купить его ещё где-то дешевле.

Предположим, ваш пользователь на локальной системе (той к которой нужно подключаться) зовётся user, сервер myserver.com, а пользователь на сервере — remote_user

1. Установим autossh:

# apt-get install autossh

2. Добавим ваш публичный ключ в список авторизованных ключей на удалённом сервере (если он ещё не добавлен):

$ cat ~.sshid_rsa.pub | ssh [email protected] 'cat >> .ssh/authorized_keys'

3. Создадим скрипт для автоматического создания и поддержания соединения с удалённым сервером

Вот содержимое скрипта, только в нём нужно изменить myserver.com, user и remote_user на то, что актуально для вас

#!/bin/bash
# Прибьём все активные процессы autossh
killall -SIGKILL autossh &&
 
# Включим отладку и нулевое время переподключения
export AUTOSSH_DEBUG=1
export AUTOSSH_GATETIME=
 
# Запустим autossh в фоновом режиме с отрывом от терминала 
nohup autossh -M 10984 -N -f -o "PubkeyAuthentication=yes" -o "PasswordAuthentication=no" -i homeuser.sshid_rsa -R 6666:localhost:22 [email protected]  &

Положить этот скрипт можно, например, в файл ~/bin/autossh.sh и сделать исполнимым:

chmod +x ~binautossh.sh

Кстати, для того, чтобы исполнимые файлы из папки ~/bin/ запускались из консоли откуда угодно, достаточно добавить в файл ~/.profile такие строчки:

if  -d "$HOME/bin"  ; then
    PATH="$HOME/bin:$PATH"
fi

4) Проверим работоспособность:
Для этого запустим скрипт:

~binautossh.sh

Он должен сразу завершиться (так как в нём указан запуск autossh в фоновом режиме).
Проверим, запустился ли autossh:

pgrep -l autossh

Эта команда должна вывести какое-то число (номер процесса) и его название — autossh.

Подключимся к удалённому серверу, и попробуем оттуда подключиться к локальному через проброшенный порт:

ssh [email protected]
ssh [email protected] -p 6666

Если всё хорошо, у вас спросят пароль вашей локальной машины, после чего вас пустят на локальную машину через тоннель.

5) Создадим скрипт для удобного подключения
Создадим на удалённом сервере файл, например ~/bin/ssh-laptop с таким вот содержимым:

#!/bin/bash
ssh [email protected] -p 6666

и сделаем его исполнимым:

chmod +x ~binssh-laptop

Готово! Теперь для доступа к вашему ноутбуку/домашнему серверу/роутеру/чему-то ещё, можно использовать команду:

ssh [email protected] ssh-laptop

В случае проблем можно сделать следующее:

1) Попробовать запустить autossh без амперсанда («&») и без nohup, чтобы посмотреть на что он ругается.
2) На удалённом сервере, до запуска autossh (или прибив его) проверить, не занят ли порт 6666 какой-то другой программой, с помощью команды netstat -nlp | grep 6666

Было бы нечестно обойти стороной и другие существующие варианты, поэтому кратко упомяну, в чём их недостатки по сравнению с описанным способом. Преимущества же у них очевидны — более простая настройка.

Как настроить VNC через ssh

По своей природе VNC — это не безопасный протокол. Хорошо известнен риск безопасности VNC: соединение с сервером VNC осуществляет по сети через не зашифрованный канал. Т.е. кто угодно может стащить установленную VNC сессию. Для защиты от VNC сниффинга, вам следует попробовать дополнительные внеполосные механизмы шифрования, под или над соединением VNC.

Один из таких механизмов — это настройка VNC сессии через SSH туннель. В этом уроке я опишу как настроить VNC через SSH на Linux.

Я предполагаю, что у вас уже есть где-то в сети VNC сервер, к которому мы будем коннектится.

Чтобы создать SSH туннель к удалённому хосту, где запущен VNC сервер, удалённый хост должен также иметь запущенный SSH. Поэтому для начала установите сервер OpenSSH на удалённый хости (как это сделать рассказано в первой части).

Следующий шаг — это создание SSH туннеля с локального хоста на удалённый хост. Чтобы это сделать, запустите следующую команду. Здесь 5900 — это номер порта, который прослушивает удалённый VNC сервер.

ssh user@remote_host -L 5900:127.0.0.1:5900

После введение SSH пароля и успешного входа, будет установлен SSH туннель между 127.0.0.1:5900 и remote_host:5900.

Теперь вы можете продолжать и запустить клиент VNC на локальном хосте. В вашем VNC клиенте соединитесь к 127.0.0.1:5900 вместо удалённого VNC сервера. Тогда трафик VNC будет перенаправляться через SSH туннель между вами и удалённым сервером VNC и, следовательно, он будет обезопасен от перехвата пакетов.

gvncviewer 127.0.0.1

Вход с помощью ключей SSH

Зачастую аутентификация на основе ключей намного надежнее, чем вход в удаленную систему при помощи пароля.

Как работает аутентификация на основе ключей?

Аутентификация на основе ключей подразумевает создание пары ключей – закрытого и открытого.

Закрытый ключ находится на клиентской машине, должен быть защищен и храниться в секрете.

Открытый ключ можно давать кому угодно и разместить на любом сервере, к которому нужно получить доступ.

При попытке подключиться с помощью пары ключей сервер использует открытый ключ, чтобы создать сообщение для клиентского компьютера, которое можно прочитать только с помощью закрытого ключа.

Затем клиентский компьютер посылает серверу соответствующий ответ, благодаря чему сервер понимает, что клиент является законным.

После настройки ключей весь этот процесс осуществляется автоматически в фоновом режиме.

Создание SSH-ключей

SSH-ключи нужно создать на компьютере, с которого нужно установить подключение (как правило, это локальный компьютер).

В командной строке наберите:

Чтобы принять настройки по умолчанию, нажмите Enter. Ключи будут созданы в ~/.ssh/id_rsa.pub и ~/.ssh/id_rsa.

Перейдите в каталог .ssh, набрав:

Обратите внимание на права на файлы:

Как можно видеть, права на чтение и изменение файла id_rsa есть только у владельца. Такие привилегии необходимы, чтобы сохранить ключ в секрете.

В то же время, файл id_rsa.pub можно использовать совместно, потому он имеет соответствующие привилегии.

Передача открытого ключа на сервер

Следующая команда скопирует открытый ключ на удаленный сервер:

Это откроет сессию SSH, для входа в которую нужно ввести пароль.

После введения пароля открытый ключ будет скопирован на сервер, что позволит в следующий раз войти в систему без пароля.

Базовые опции подключений

Теперь, когда у вас есть представление об общем формате конфигурационного файла, давайте обсудим некоторые общие параметры и формат, который будет использоваться для указания их в командной строке.

Основная информация, необходимая для подключения к удаленному хосту – это имя хоста, имя пользователя и порт, на котором запущен демон SSH.

Например, нам нужно подключиться из командной строки как пользователь apollo к хосту example.com, SSH-демон которого работает по порту 4567. Предоставить переменные можно различными способами. Наиболее распространенным, вероятно, будет формат:

Но также можно использовать полные опции с флагом –о:

Здесь все параметры передаются с помощью флага -o. Тут также можно указать псевдоним anything для хоста, как в конфигурационном файле. Фактическое имя хоста берется из параметра HostName.

Имена опций, написанные с большой буквы, во втором варианте – то же самое, что нужно использовать в файле конфигурации. Вы можете найти полный список доступных параметров с помощью команды:

Чтобы установить их в конфигурационном файле, сначала нужно решить, какие хосты будут их использовать.

Также у вас есть возможность назначить псевдоним для этого соединения. Благодаря этому вам не придется вводить все имя хоста каждый раз. Например, вы можете использовать псевдоним «home» для ссылки на это соединение и связанные с ним параметры:

Теперь можно определить детали соединения для этого хоста. Вы можете использовать второй формат, который мы рассмотрели выше.

Мы определяем параметры с помощью системы «ключ-значение». Каждая пара должна быть в отдельной строке. Ключи могут быть отделены от значений либо пробелом, либо знаком равенства с дополнительным пробелом. Все эти строки клиент SSH интерпретирует одинаково:

Единственное различие заключается в том, что (в зависимости от параметра и значения) используя знак равенства без пробелов, вы можете указать опцию в командной строке без кавычек. Это зависит только от ваших предпочтений.

Настройка SSH в Ubuntu

С параметрами по умолчанию сервер SSH не очень безопасен поэтому перед тем, как программа будет готова к полноценному использованию ее нужно немного настроить. Все настройки сервера SSH хранятся в конфигурационном файле sshd_config, который находится в папке /etc/ssh.

Перед тем как вносить изменения в этот конфигурационный файл рекомендуется сделать его резервную копию, для этого можете использовать такую команду:

Дальше вы можете перейти к настройке конфигурационного файла:

Первым делом желательно сменить порт, на котором работает ssh, возможный злоумышленник не знал включен ли у вас этот сервис. Найдите в конфигурационном файле строчку Port и замените ее значение на любое число, например, Port 2222:

По умолчанию вход от имени суперпользователя включен, рекомендуется отключить такую возможность. Для этого найдите строчку PermitRootLogin и замените ее значение на no:

Чтобы разрешить аутентификацию по ключу, а не по паролю найдите строку PubkeyAuthentication и убедитесь, что ее значение yes.

После того как все настройки будут завершены, сохраните изменения нажав :w и перезапустите службу ssd:

Более подробно про настройку и использование различных тонкостей ssh рассказано в статье как использовать ssh.

Если вы изменили порт, то при подключении в клиенте тоже нужно указать новый порт, так как по умолчанию будет использоваться 22, например:

К тому же, если на компьютере установлен и настроен брандмауэр, то в нем тоже нужно разрешить доступ к новому порту ssh, для этого выполните:

Даже если служба ssh находится на порту по умолчанию, его тоже нужно открыть в брандмауэре если вы собираетесь подключаться к компьютеру через интернет:

Настройка ssh Ubuntu 16.04 полностью завершена.

Использование SSH

Основная цель этой статьи — показать интересные и полезные способы использования ssh, о которых, возможно, вы не знали. Переходим к самому вкусному — возможности ssh.

Выполнить команду

Мы привыкли подключаться к удаленному серверу, а уже потом выполнять нужные команды, но на самом деле утилита ssh позволяет сразу выполнить нужную команду без открытия терминала удаленной машины. Например:

Выполнит команду ls на удаленном сервере и вернет ее вывод в текущий терминал.

Выполнить локальный скрипт

Выполним интерпретатор bash на удаленном сервере и передадим ему наш локальный скрипт с помощью перенаправления ввода Bash:

Бекап на удаленный сервер и восстановление

Мы можем сохранять бекэп диска сразу на удаленном сервере с помощью ssh. Перенаправим вывод dd с помощью оператора перенаправления |, затем сохраним его на той стороне в файл:

Теперь чтобы восстановить состояние диска из сделанной копии выполните:

Здесь и выше /dev/sda имя файла вашего жесткого диска.

Аутентификация без пароля

Использование ssh пароля для входа на сервер не только неудобно но и небезопасно, потому что этот пароль в любой момент может быть подобран. Самый надежный и часто используемый способ аутентификации — с помощью пары ключей RSA. Секретный ключ хранится на компьютере, а публичный используется на сервере для удостоверения пользователя.

Настроить такое поведение очень легко. Сначала создайте ключ командой:

Во время создания ключа нужно будет ответить на несколько вопросов, расположение оставляйте по умолчанию, если хотите подключаться без пароля — поле Passphare тоже оставьте пустым.

Затем отправляем ключ на сервер:

Вот и все. Теперь при попытке подключится к этому серверу пароль запрашиваться не будет, а стазу произойдет подключение. Смотрите подробнее создание открытого ключа для ssh.

Взять пароль из локального файла

Напомню, что хранить пароли в обычных текстовых файлах небезопасно, но если хотите, то да — возможно. Для этого используется оператор перенаправления ввода Bash:

 Изменить приветствие SSH

При входе по ssh может выводиться приветствие, изменить его очень легко. За это отвечает файл /etc/issue. Просто откройте этот файл и введите нужный текст:

Смотрим неудачные попытки входа SSH

Хотите посмотреть были ли попытки неудачного доступа по ssh к вашему серверу и с каких IP адресов? Запросто, все запросы логируются в файл /var/log/secure, отфильтруем только нужные данные командой:

Передача файлов по SSH

Кроме выполнения команд, можно копировать файлы по ssh. Для этого используется утилита scp. Просто укажите файл, который нужно передать, удаленный сервер и папку на сервере, вот:

$ scp /адрес/локального/файла пользователь@хост:адерс/папки

Например:

Кроме утилиты scp, передача файлов ssh может быть выполнена более хитрым способом. Прочитаем файл и с помощью cat, передадим, а там сохраним поток в файл:

Или так:

Пойдем еще дальше, вы можете сжимать файлы перед передачей с помощью tar, а потом их сразу же на лету распаковывать:

Такое копирование файлов ssh позволяет отправлять сразу целые папки.

Запуск графических приложений по ssh

Если вам нужно запустить то или иное графическое приложение на удаленной машине необязательно для этого использовать VNC, вы можете обойтись возможностями ssh. Программа будет выполняться на стороне сервера, а вам будет лишь транслироваться окно, чтобы вы могли сделать все что нужно. Причем все данные шифруются. Чтобы эта функция работала, нужно включить ее поддержку на стороне сервера.

Затем просто выполняем команду запуска графического приложения на удаленном сервере вот таким образом:

Как вы уже видели опция X разрешает перенаправление X11 на стороне клиента, а С — сжатие данных.

Завершение сессии ssh

Если вы использовали ssh с нестабильным интернетом, когда соединение время от времени рвется, то вам уже, наверное, надоело закрывать терминал, потому что иначе, на первый взгляд, сеанс никак не прекратить. Когда соединение с удаленным сервером разорвано вы не можете ввести никакую команду и сочетания клавиш Ctrl+C, Ctrl+Z, Ctrl+D не работают. И не будут работать поскольку клиент пытается отправить эти команды на сервер. Но есть решение — Escape последовательности. Чтобы активировать их поддержку добавьте строку:

В файл /etc/ssh/ssh_config

Теперь, чтобы разорвать ssh соединение достаточно нажать Enter и набрать:

Другие управляющие символы можно узнать нажав:

Как изменить порт, на котором работает сервер OpenSSH

Все настройки выполняются в файле /etc/ssh/sshd_config или в строке команды запуска sshd.

Для sshd.socket смена прослушиваемого службой порта происходит иначе.

Если вы используете sshd.service (объяснения в ), то смена порта также происходит в файле /etc/ssh/sshd_config. Для этого раскомментируйте директиву Port и укажите новое значение:

Port 2222

Опцию Port разрешено использовать несколько раз.

Также порт можно установить с помощью ListenAddress.

Если вы используете сокет sshd.socket и хотите поменять для SSH прослушиваемый порт, то вам нужно редактировать специальный файл следующим образом:

sudo systemctl edit sshd.socket

Там можно указать только порт:

ListenStream=
ListenStream=23456

А также IP и порт:

ListenStream=
ListenStream=172.0.0.1:12345

Обратите внимание, что использование ListenStream дважды в одном конфигурационном файле не является ошибкой. Если вы используете ListenStream только один раз с указанием порта, тогда будут прослушиваться и 22 порт и порт, который вы указали

Первое использование ListenStream= отключает прослушивание 22 порта.

Для sshd.socket другие настройки, как обычно, в файле /etc/ssh/sshd_config. Но директивы Port и ListenAddress будут игнорироваться (если выбрано прослушивание сокета).

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
HOSTBOARD.RU
Добавить комментарий