Клиенты для создания безопасного SSH соединения в Андроид
Клиенты для создания безопасного SSH соединения в Андроид
Разработчики часто используют в работе SSH клиенты для мобильных операционных систем. Было создано немало SSH agent для различных операционок, но в рамках данного материала мы рассмотрим только SSH решения, заточенные под Android. Рассматривать платные клиенты при существующих бесплатных аналогах, мы не станем.
Конвертация ключа PuTTY
PuTTy использует собственный формат ключей. Поэтому если вы сгенерировали приватный ключ в личном кабинете Airnode (при помощи OpenStack) или в другой программе, а подключение к виртуальному серверу хотите делать через Putty, необходимо конвертировать приватный ключ.
Откройте приложение «PuTTYgen».
Нажмите «conversation» и выберите «Import key».
Выберите фаил с ключом и откройте его.
После этого сохраните преобразованный приватный ключ с помощью кнопки «Save private key».
Также доступна обратная процедура — если вы захотите сменить SSH-агент с PuTTy на любой другой, нужно сконвертировать ключ в формат OpenSSH.
Для этого используйте меню «Conversions / Import key»:
Время таймаута SSH — соединения
Проблема возникла из-за необходимости поддерживать достаточно много времени процесса соединения с сервером Linux, чтобы каждый раз не соединяться и каждый раз не вводит монотонные строки входа в папку проекта на сервере. Для настройки. Настроить нужно, как серверную часть, так и клиентскую, если к примеру соединение производится через PuTTY или через встроенный терминал в рабочем IDE. У меня была проблема последнего характера.
Настройка серверной части
Проблема изначально заключалась в следующем — при подключении к серверу по SSH сессия обрывалась достаточно быстро, задачу можно было решить увеличив интервал таймаута. Соотвествующие настройки можно произвести отредактировав файл sshd_config расположенный в директории /etc/ssh/sshd_config.
В данном файле необходимо найти несколько параметров, которые отвечают за данную опцию:
- TCPKeepAlive — определяет поддержку соединение в активном состоянии, для этого используются специальные контрольные сообщения, посылаемые с определенным интервалом времени. Если директива установлена, обрыв соединения будет вовремя замечен, а соответствующий процесс будет убит. Возможные значения «yes», «no».
- ClientAliveInterval — время простоя клиента в секундах, после которого демон sshd отправляет через защищённый канал запрос клиенту. Директива работает только для протокола 2. По-умолчанию установлен в 0, т.е. клиенту вообще не будут направляться такие запросы.
- ClientAliveCountMax — количество проверок доступности клиента, которые могут оставаться без ответа. Если предел достигнут, sshd завершит сеанс. Данные запросы, отличаются от TCPKeepAlive, так как отправляются через защищённый канал и не могут быть подменены, в то время как TCPKeepAlive такую возможность допускает. СlientAlive полезен, если поведение клиента или сервера зависит от активности соединения. Если ClientAliveInterval равно 15 секундам, а значение ClientAliveCountMax оставлено по-умолчанию, не отвечающие клиенты SSH, будут отключаться приблизительно через 45 секунд. Параметр работает только для протокола версии 2. По-умолчанию установлено значение 3.
В нашем случае установим данные параметры следующим образом:
После этого перезапускаем сервис SSHD
Это соответствует тому, что TCPKeepAlive проверяет находится ли клиент на линии сервера, ClientAliveInterval — это время простоя в секундах, после которого демон sshd отправляет запрос клиенту, ClientAliveCountMax указывает количество проверок доступности клиента, выше в примере указана поддержка соединения в течении 3 часов (180 минут).
Настройка таймаута соединения в SSH — клиенте PuTTY
В самом клиенте PuTTy также желательно произвести нехитрые настройки. Для этого идем в секцию «Connecton» и выставляем параметр «Seconds between keepalives» равным 60 секундам. Так же можно отметить опцию «Enable TCP keepalives»
Настройка таймаута соединения в WinSCP
Открываем менеджер соединений WinSCP и клацаем на нужное соединением, после жмем на кнопку «Еще»Далее, в открывшемся окне, в ветке «Подключение» указываем необходимое время для таймаута
Как это сделать в своем рабочем IDE
Зависит от IDE, в любом случае в параметрах и настройках в разделе SSH — соединения. В моем случае проблема была с таймаутом соединения терминала IDE NetBeans. Может и есть, где настраивается время, но я не нашел данный параметр в среде, но проблема исчезла после увеличения таймаута со стороны сервера, так что проблемы с клиентом нет.
Создание SSH-ключей на Windows с PuTTYgen
Если вы используете ОС Windows, то подключиться по SSH к вашему (Linux) серверу можно через PuTTY или OpenSSH . Генерация ключей в этом случае выполняется также при помощи этих программ. В примере мы используем клиент PuTTY.
Запустите приложение PuTTYgen , которое устанавливается вместе с PuTTY.
Выберите тип ключа SSH2-RSA и нажмите Generate .
В процессе генерации ключей несколько раз произвольно проведите мышкой по экрану приложения для создания случайных величин, используемых для ключей.
После завершения создания ключей открытый ключ выводится на экран, закрытый хранится в памяти приложения. Чтобы сохранить эти ключи нажмите Save public key и Save private key . Укажите расположение файлов с ключами.
При сохранении закрытого ключа, если не заполнено поле Key passphrase , появится запрос «Хотите ли вы сохранить ключ без секретной фразы?»
Теперь открытый ключ необходимо скопировать на сервер в файл authorized_keys . Используйте WinSCP или другой клиент для работы с файлами на удалённом Linux-сервере. Вы можете скопировать файл с открытым ключом целиком на сервер, чтоб его копия хранилась в папке .ssh
Откройте файл authorized_keys через WinSCP и файл, в который вы сохранили открытый ключ (public), на локальном компьютере текстовым редактором. Скопируйте значение ключа, сохраните и закройте файл в WinSCP.
При запуске PuTTY укажите путь к закрытому ключу на локальном компьютере. Для этого во вкладке Connections → Auth выберите необходимый путь.
Теперь можно отключить на сервере аутентификацию по паролю и использовать только SSH-ключи.
Возможности SSH
Для работы с SSH необходим SSH-сервер и SSH-клиент.
SSH-сервер принимает соединение от клиентских машин и производит аутентификацию. Аутентификация на SSH производится тремя способами:
Основными программными платформами, выступающими в роли SSH-сервера являются:
SSH-клиент используется для непосредственного входа на удаленный сервер и выполнения различных команд:
SSH-клиенты и их программные оболочки:
Не смотря на то, что SSH-клиентов очень много, самыми популярными и часто используемыми являются PuTTY и SecureCRT. PuTTY является наиболее предпочтительным, потому что предоставляется на бесплатной основе.
Кому интересно, я для связи с сервером пользуюсь бесплатной программой WinSCP (свободный графический клиент протоколов SFTP и SCP) — PuTTY агент, которым очень удобно работать по протоколу SSH. Подчеркну, если вы не хотите, чтобы ваши сайты подхватили вирус или еще какую-нибудь заразу, лучше сразу начните использовать WinSCP вместо обычных FTP клиентов (FileZilla), так вы сможете быть уверены, что у вас не уведут пароли.
Основы SSH
Прежде чем вы увидите какой-либо процесс настройки, будет лучше пройти через базовую концепцию SSH.
Протокол SSH основан на архитектуре сервер-клиент. «Сервер» позволяет «клиенту» подключаться по каналу связи. Этот канал зашифрован, и обмен регулируется использованием открытых и закрытых ключей SSH.
С сайта https://www.ssh.com/academy/ssh
OpenSSH — один из самых популярных инструментов с открытым исходным кодом, который обеспечивает функциональность SSH в Linux, BSD и Windows.
Для успешной настройки SSH вам необходимо:
- Установите компоненты сервера SSH на машине, которая действует как сервер. Это обеспечивается пакетом openssh-server.
- Установите клиентский компонент SSH на машину, с которой вы хотите подключиться к удаленному серверу. Это обеспечивается пакетом openssh-client, и с ним предустановлено большинство дистрибутивов Linux и BSD.
Важно различать сервер и клиент. Возможно, вы не захотите, чтобы ваш персональный компьютер работал как SSH-сервер, если у вас нет веских причин, по которым вы хотите, чтобы другие подключались к вашей системе через SSH.
Как правило, у вас есть выделенная система, работающая в качестве сервера. Например, Raspberry Pi с сервером Ubuntu. Вы включаете SSH на Raspberry Pi, чтобы вы могли контролировать и управлять устройством со своего основного персонального компьютера, используя SSH в терминале.
Обладая этой информацией, давайте посмотрим, как настроить SSH-сервер в Ubuntu.
CrossFTP
Бесплатная версия CrossFTP работает с архивами, шифрованием, закладками, умеет совершать групповые операции и хорошо искать файлы. Поддерживается множество кодировок, в том числе и кириллица. А ещё программа кроссплатфоменная.
Есть и ряд недостатков, которые не позволяют мгновенно менять ширину канала, ограничивать трафик или увеличивать число потоков для закачки (только в платной версии), да и не всегда закачка ставится на паузу. Установка программы осуществляется через Java-инсталлятор.