RDP over SSH. Как я писал клиент для удаленки под винду

SSH (англ. Secure SHell — «безопасная оболочка») — сетевой протокол прикладного уровня, позволяющий производить удалённое управление операционной системой и туннелирование TCP-соединений (например, для передачи файлов).

Шаг — Создание пары ключей RSA

Сперва создадим пару ключей на клиентской машине (обычно, это ваш компьютер):

  • ssh-keygen

По умолчанию ssh-keygen создаёт 2048-битную пару ключей RSA, которая достаточно безопасна для большинства сценариев использования (вы можете также добавить к этой команде флаг -b 4096 для получения 4096-битный ключей).

После ввода этой команды вы должны увидеть следующий вывод:

ВыводGenerating public/private rsa key pair. Enter file in which to save the key (/your_home/.ssh/id_rsa):

Нажмите Enter для сохранения пары ключей в директорию .ssh/ внутри вашей домашней директории или задайте другую директорию.

Если ранее вы уже генерировали пару SSH ключей, вы можете увидеть следующий вывод:

Вывод/home/your_home/.ssh/id_rsa already exists. Overwrite (y/n)?

Если вы выберете перезаписать ключи на диск, вы не сможете использовать старые ключи для аутентификации. Будьте очень осторожны при выборе yes, это решение нельзя будет отменить.

Вы должны увидеть следующий вывод:

ВыводEnter passphrase (empty for no passphrase):

Здесь вы можете задать ключевую фразу (passphrase), что обычно рекомендуется сделать. Ключевая фраза добавляет дополнительный уровень безопасности для предотвращения входа на сервер неавторизованных пользователей. Для того, чтобы узнать больше о том, как это работает, рекомендуем ознакомиться с нашим руководством по настройке аутентификации по ключам SSH на серверах Linux.

Читайте также:  Как установить macOS через виртуальную машину

Вы должны увидеть следующий вывод:

ВыводOutput Your identification has been saved in /your_home/.ssh/id_rsa. Your public key has been saved in /your_home/.ssh/id_ The key fingerprint is: a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 [email protected]_host The key’s randomart image is: +—[ RSA 2048]—-+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +——————+

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

Как подключиться по SHH

Для подключения к удаленному серверу необходима специальная программа. В *nix-подобных операционных системах подобная программа установлена по умолчанию. Для Windows необходимо установить стороннюю программу, например, скачать Putty. После установки программы запустите Putty ().

В поле «Host Name (or IP address)» введите IP адрес удаленного сервера и нажмите кнопку «Open». Обратите внимание, что «Connection type» (Тип подключения) должен быть установлен SSH. Откроется SSH консоль, где необходимо ввести имя пользователя и вводе пароля никакие символы не будут отображаться.

А что скажет Google?

В общем‑то, задача не новая, и реали­заций пос­тро­ения SSH-тун­неля сущес­тву­ет доволь­но мно­го. В Google мож­но с ходу най­ти ре­шения на базе PuTTY или ва­риан­ты для Windows 10. Мы сво­их поль­зовате­лей любим (и свои нер­вы тоже). А зна­чит, надо дать им такой инс­тру­мент, который не нуж­но нас­тра­ивать и который будет работать надеж­но.

Ины­ми сло­вами, решение дол­жно отве­чать сле­дующим тре­бова­ниям:

  • прос­тота для поль­зовате­ля;
  • лег­кость под­дер­жки;
  • прос­тая и понят­ная под­готов­ка и нас­трой­ка «сер­верных час­тей».

Ре­шение будет осно­вано на тех­нологии RDP over SSH. Тех­ничес­ки мы орга­низу­ем это так:

  • кли­ент SSH для орга­низа­ции тун­неля с проб­росом пор­та до целево­го ПК под­клю­чения;
  • ав­томати­чес­кий старт RDP-сес­сии без допол­нитель­ного вво­да парамет­ров под­клю­чения.

Сис­тема дол­жна быть лег­ко встра­иваемой, и дол­жен быть кли­ент для прод­винутых поль­зовате­лей (опци­ональ­но).

Загружаем ключ ssh на сервер

Теперь нужно скопировать созданный нами ключ на сервер. Для этого подключаемся к ssh с помощью следующей команды:

ssh-copy-id [email protected]

Команда “ssh-copy-id” скопирует ключ на ваш сервер, в папку .ssh. Далее все как обычно, имя под которым вы входите по ssh и ip вашего сервера.

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

cat ~/.ssh/id_ | ssh [email protected] «mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys»

Не забудьте поменять в команде [email protected] на свои данные.

После удачного соединения по созданному нами ключу, можно приступать к отключению опции ” PasswordAuthentication”. Эта опция позволяет войти на наш сервер с помощью пароля. А что бы ее отключить, нужно подправить конфиг:

Загружаем ключ ssh на сервер

sudo nano /etc/ssh/sshd_config

В конфигурационном файле найдите строку:

PasswordAuthentication yes

И замените слово “yes” на “no”. Возможно, эта опция будет закомментирована, вам нужно убрать решетку “#” раскомментировав ее. После чего сохраните конфиг и перезагрузите сервис ssh командой:

sudo service ssh restart

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

Как использовать SSH-клиент в Windows 10

Теперь вы можете использовать SSH-клиент, выполнив команду ssh. Это работает либо в окне PowerShell, либо в окне командной строки, поэтому используйте то, что вы предпочитаете.

Читайте также:  Windows 10 на вашем компьютере недостаточно памяти

Чтобы быстро открыть окно PowerShell, щелкните правой кнопкой мыши кнопку «Пуск» или нажмите Windows + X и выберите «Windows PowerShell» в меню.

Чтобы просмотреть синтаксис команды ssh, просто запустите ее:

SSH

Эта команда работает так же, как подключение к серверу SSH через команду ssh в других операционных системах, таких как macOS или Linux. Его синтаксис или параметры командной строки одинаковы.

Например, чтобы подключиться к SSH-серверу по адресу с именем пользователя «bob», вы должны выполнить:

ssh [email protected]

По умолчанию команда пытается подключиться к серверу SSH, работающему через порт 22, который используется по умолчанию. Однако вам может потребоваться подключиться к серверу, работающему на другом порту. Вы делаете это, указывая порт с коммутатором -p. Например, если сервер принимает подключения через порт 7777, вы должны выполнить:

ssh [email protected] -p 7777

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