Как подключиться по SSH из Windows 10

Socks-proxy

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

Особые проблемы доставляют закрытые порты. То джаббер прикроют, то IMAP, то ещё что-нибудь.

Sshd_config

Аналогично операционным системам семейства Linux, OpenSSH Server в Windows имеет в своем составе особый файл, где хранятся все параметры для выполнения более подробных настроек. Например,  для ограничения входа.

Алиасы


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

Вложенные туннели

Разумеется, туннели можно перенаправлять.

Усложним задачу: теперь нам хочется показать коллеге приложение, запущенное на localhost на сервере с адресом 10.1.1.2 (на 80ом порту).

Выполнение команд на удалённом сервере без создания сессии шелла


Кроме открытия сессии шелла на удалённой системе, ssh также позволяет выполнять отдельные команды на удалённой системе.

ssh ПОЛЬЗОВАТЕЛЬ@АДРЕСАТ КОМАНДА

Например, для выполнения команды tree на удалённом хосте с IP адресом 192.168.1.36 и отображением результатов на локальной системе, нужно сделать так:

ssh mial@192.168.1.36 tree

Используя эту технику, можно делать интересные вещи, вроде такой, как выполнение команды ls на удалённой системе и перенаправление вывода в файл на локальной системе:

ssh mial@192.168.1.36 'ls *' > dirlist.txt

Обратите внимание на одиночные кавычки в вышеприведённой команде. Это сделано потому, что мы не хотим, чтобы раскрытие пути было выполнено на локальной машине; поскольку нам нужно это выполнение на удалённой системе. Также если мы хотим стандартный вывод перенаправить в файл на удалённой машине, мы можем поместить оператор редиректа и имя файла внутри одиночных кавычек:

ssh remote-sys 'ls * > dirlist.txt'

Генерация ключа


Свой ключ можно сгенерировать с помощью команды ssh-keygen. Если не задать параметры, то он сохранит всё так, как надо.

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

Сменить пароль на ключ можно с помощью команды ssh-keygen -p.

Запуск службы openssh

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

Start-Service sshd

Опционально можно установить для службы sshd автоматический запуск:

Set-Service -Name sshd -StartupType 'Automatic'

Как подключиться к серверу по ssh с компьютера на linux/macos

Подключиться по SSH к виртуальному серверу можно через терминал — в обоих случаях это приложение предустановлено.

В операционных системах семейства Linux (Ubuntu и др.) его можно открыть сочетанием клавиш Ctrl Alt T.

В MacOS приложение Терминал можно найти через Spotlight (иконка поиска в правом верхнем углу экрана).

Подключиться к виртуальному серверу по SSH можно одной командой: 

Как подключиться по ssh с компьютера на ос windows

Если на вашем компьютере установлена ОС Windows, а на сервере — UNIX-подобная система (например, Ubuntu, Debian, CentOS и др.), то для установки SSH-соединения можно использовать PuTTY. Это бесплатная программа под Windows состоит из одного запускаемого файла и не требует установки.

Чтобы установить соединение при помощи PuTTY, необходимо проделать следующие действия:

Как указать файл ключа для подключения

По умолчанию приватный ключ для подключения к SSH берётся из файла ~/.ssh/id_rsa. Если нужно подключиться к SSH серверу с другим ключом, то используйте опцию -i, после которой укажите путь до нужного файла с приватным ключом:

ssh root@_gateway -i ~/.ssh/id_rsa_router

Связанные статьи:

Как запустить midnight commander

Midnight Commander — это файловый менеджер.

Чтобы его запустить:

Как использовать кириллицу в терминале linux

Если у вас ОС Linux, то при подключении к серверу по SSH вы можете использовать в терминале не только латиницу, но и кириллицу.

Если вы хотите использовать кириллицу в течение одного сеанса SSH, то после подключения введите в терминале команду:

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

Готово, теперь при любом подключении к SSH можно будет автоматически использовать кириллицу.

Как создать или удалить папку по ssh

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

Где new_folder_name — имя создаваемой папки.

После подключения по SSH удалить папку можно с помощью команды:

Где folder_name — имя удаляемой папки. Ключ —r делает рекурсивное удаление, то есть удаляет папку со всеми вложенными в неё папками и файлами.

Ключ сервера


Первый раз, когда вы заходите на сервер, ssh вас спрашивает, доверяете ли вы ключу. Если отвечаете нет, соединение закрывается. Если да — ключ сохраняется в файл

~/.ssh/known_hosts

. Узнать, где какой ключ нельзя (ибо несекьюрно).

Если ключ сервера поменялся (например, сервер переустановили), ssh вопит от подделке ключа. Обратите внимание, если сервер не трогали, а ssh вопит, значит вы не на тот сервер ломитесь (например, в сети появился ещё один компьютер с тем же IP, особо этим страдают всякие локальные сети с 192.168.1.

1, которых в мире несколько миллионов). Сценарий «злобной man in the middle атаки» маловероятен, чаще просто ошибка с IP, хотя если «всё хорошо», а ключ поменялся — это повод поднять уровень паранойи на пару уровней (а если у вас авторизация по ключу, а сервер вдруг запросил пароль — то паранойю можно включать на 100% и пароль не вводить).

Удалить известный ключ сервера можно командой ssh-keygen -R server. При этом нужно удалить ещё и ключ IP (они хранятся раздельно): ssh-keygen -R 127.0.0.1.

Ключ сервера хранится в /etc/ssh/ssh_host_rsa_key и /etc/ssh/ssh_host_rsa_key.pub. Их можно:а) скопировать со старого сервера на новый.б) сгенерировать с помощью ssh-keygen. Пароля при этом задавать не надо (т.е. пустой). Ключ с паролем ssh-сервер использовать не сможет.

Заметим, если вы сервера клонируете (например, в виртуалках), то ssh-ключи сервера нужно обязательно перегенерировать.

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

Конфигурационные директивы файлов /etc/ssh/ssh_config и ~/.ssh/config

Конфигурационные данные обрабатываются в следующем порядке и имеют следующий приоритет:

1. Опции командной строки

2. Файл со специфичными для пользователя настройками ~/.ssh/config

3. Файл с общесистемными настройками /etc/ssh/ssh_config


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

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

Необходимо отметить на специальные директивы Host и Match, которые разбивают файл на блоки.

Директива Host устанавливает имя хоста, к котором применяются все последующие настройки, пока не будет встречена другая директива Host или Match.


Если в качестве хоста указать ‘*’, то это позволяет задать глобальные настройки значений по умолчанию, применимые ко всем хостам.

Шаблон может иметь противоположное значение, если перед ним поставить восклицательный знак (‘!’). Если запись с отрицанием соответствует, то тогда пункт Host игнорируется, если не произойдёт совпадение с другими шаблонами. Следовательно, совпадения с отрицаниями полезны для обеспечения исключений из совпадений по подстановочным символам.

Дополнительно смотрите раздел «Шаблоны в файле настроек SSH».

Далее показан небольшой фрагмент конфигурации, в которой для хоста 10.6.0.1 устанавливается порт подключения 55455, для хоста 192.0.100.8 в качестве порта подключения будет использован 2222, а для всех остальных хостов будет выполнено подключение к 22 порту:

Host 10.6.0.1
	Port 55455
Host 192.0.100.8
	Port 2222
Host *
	Port 22


Эти конфигурационные файлы содержат пары «ключевое слово — аргумент», одна пара на одной строке. Опционально аргументы можно заключить в двойные кавычки (“), чтобы передать аргументы, содержащие пробелы.

Ключевые слова не чувствительны к регистру, а аргументы чувствительны к регистру.

Многие директивы закомментированы, но они указывают на значение по умолчанию, которое всё равно используется. Если вас устраивает значение по умолчанию, то не нужно ничего менять. Если же вы хотите другое значение, то нужно раскомментировать строку с соответствующей директивой (убрать символ #) и внести изменения.

:/>  Как убрать пароль с ноутбука при включении если забыл его виндовс 7

Параметры конфигурации могут быть разделены пробелами или необязательными пробелами и ровно одним ‘=’; последний формат полезен, чтобы избежать необходимости заключать значения с пробелами в кавычки при указании параметров конфигурации с использованием параметров ssh, scp и sftp -o.


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

Выше уже рассмотрен пример подключения к удалённому SSH серверу по лаконичному имени вместо IP адреса. Это общесистемная настройка преобразования имени в IP адрес, в результате теперь имена suip и s можно использовать с любой программой — хоть в веб-браузере, хоть с утилитами, например с ping:

ping s
PING suip (185.117.153.79) 56(84) bytes of data.
64 bytes from suip (185.117.153.79): icmp_seq=1 ttl=48 time=282 ms
64 bytes from suip (185.117.153.79): icmp_seq=2 ttl=48 time=310 ms
64 bytes from suip (185.117.153.79): icmp_seq=3 ttl=48 time=329 ms
64 bytes from suip (185.117.153.79): icmp_seq=4 ttl=48 time=352 ms
64 bytes from suip (185.117.153.79): icmp_seq=5 ttl=48 time=256 ms
64 bytes from suip (185.117.153.79): icmp_seq=6 ttl=48 time=298 ms
64 bytes from suip (185.117.153.79): icmp_seq=7 ttl=48 time=255 ms
64 bytes from suip (185.117.153.79): icmp_seq=8 ttl=48 time=256 ms
^C
--- suip ping statistics ---
8 packets transmitted, 8 received, 0% packet loss, time 9ms
rtt min/avg/max/mdev = 255.457/292.226/352.073/34.079 ms

Но у ssh клиента есть свая собственная функциональность задать удобное (хорошо запоминающееся) имя хоста. Причём они позволяют сразу указать и порт, что с предыдущем методом сделать невозможно.


К примеру, IP адрес моего SSH сервера 185.117.153.79, его порт 54321 и я хочу добавить возможность подключаться к нему по имени Host, тогда в файл ~/.ssh/config мне достаточно добавить следующее:

Host suip
    HostName 185.117.153.79
    Port     54321

Как видим, используется директива HostName — она устанавливает настоящее имя хоста, в том числе можно указывать IP адрес.

Директива Port устанавливает порт, который должен использоваться для данного хоста.


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

ssh -p 54321 ПОЛЬЗОВАТЕЛЬ@185.117.153.79

Либо применять её полный эквивалент:

ssh ПОЛЬЗОВАТЕЛЬ@suip

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

man ssh_config


Для получения информации об опциях командной строки выполните:

man ssh

Конфигурационные файлы клиента ssh

/etc/ssh/ssh_config

Общесистемный файл конфигурации клиента SSH.

/etc/ssh/ssh_known_hosts


Общесистемный список ключей известных хостов. Этот файл должен быть подготовлен системным администратором, чтобы он содержал открытые ключи хостов всех компьютеров в организации. Этот файл должен быть читаемым для всех.

~/.ssh/

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

~/.ssh/config


Это конфигурационный файл с настройками каждого пользователя. Из-за возможного злоупотребления этот файл должен иметь строгие разрешения: чтение/запись для пользователя и недоступность для записи другими.

~/.ssh/known_hosts

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

Копирование ключа на сервер


В каталоге пользователя, под которым вы хотите зайти, если создать файл

~/.ssh/authorized_keys

Копирование файлов

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

scp

, которая осуществляет копирование файла через ssh-сессию.

Настройка сетевого адаптера для dns-сервера

Установка DNS-сервера предполагает наличие доменной зоны, поэтому необходимо создать частную сеть в личном кабинете и подключить к ней виртуальные машины.

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

Как подключиться по SSH из Windows 10

Наведя курсор на значок сети в системном трее, можно вызвать всплывающую подсказку с краткими сведениями о сетях. Из примера выше видно, что присоединённая сеть это Network 3.

Далее предстоит проделать цепочку действий:

  • Нажать правой клавишей мыши Пуск, в выпадающем меню выбрать пункт Сетевые подключения;
  • Правой кнопкой мыши нажать на необходимый сетевой адаптер, в меню выбрать Свойства;
  • В окне свойств выбрать IPv4 и нажать на кнопку Свойства;
  • Заполнить соответствующие поля необходимыми данными:

Как подключиться по SSH из Windows 10

Здесь в качестве предпочитаемого DNS-сервера машина назначена сама себе, альтернативным назначен dns.google [8.8.8.8].

Опции командной строки клиента ssh


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

-p ПОРТ

Устанавливает порт, к которому нужно подключиться на удалённом сервере SSH. Портом по умолчанию является 22. Эту настройку можно установить в конфигурационном файле персонально для каждого хоста.

-E log_file


Добавляет отладочные логи к файлу log_file вместо стандартного вывода ошибок.

-F configfile

Определяет альтернативный файл конфигурации на уровне каждого пользователя. Если в командной строке указан файл конфигурации, системный файл конфигурации (/etc/ssh/ssh_config) будет проигнорирован. По умолчанию для файла конфигурации на уровне пользователя используется ~/.ssh/config.

Опции по умолчанию

По подсказке

Первичная конфигурация ssh-сервера

По умолчанию при подключении к OpenSSH-серверу используется командная строка Windows. Вы можете использовать практически любую оболочку на вашем компьютере с Windows через SSH-соединение. Даже возможно использовать Bash, когда подсистема Windows для Linux (WSL) также установлена на целевой машине. Также возможно изменение оболочки по умолчанию на SSH-сервере на нечто иное, чем командная оболочка. Для этого ключ реестра «DefaultShell» необходимо изменить.

Сделать это можно как через редактор реестра regedit.exe, открыв в нем следующий путь: HKEY_LOCAL_MACHINESOFTWAREOpenSSH и изменив в нем параметр DefaultShell, указав в нем полный путь до исполняемого файла необходимой командной строки, например:

C:WindowsSystem32WindowsPowerShellv1.0powershell.exe

Тоже самое можно сделать используя PowerShell:

New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -Force

Проверим настройки Windows Firewall, используя для этого PowerShell:

Get-NetFirewallRule -Name *ssh*

Введя данную команду мы получим параметры правила, разрешающего SSH-подключение к серверу. Если правила не оказалось, введем следующую команду, создав его:

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

Подключение к ssh из windows

Для Windows имеются клиенты SSH, например PuTTY. Но это только клиент, без дополнительных возможностей — например, с PuTTY не получится создать ключи для входа на SSH без пароля. По этой причине я сам предпочитаю и рекомендую Cygwin (смотрите «Как начать знакомство с командами Linux: Cygwin»).

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

Подключение к ssh по имени хоста

У меня есть VPS, у которой IP адрес 185.117.153.79, чтобы подключиться к ней я выполняю команду:

ssh root@185.117.153.79

Но всё время держать в уме IP адрес неудобно, особенно если серверов несколько. Было бы удобнее, подключаться к хосту по легко запоминаемому имени. Это IP адрес сервера SuIP, поэтому в качестве короткого имени я выберу suip, а в качестве ещё более короткого псевдонима просто букву s.

Чтобы операционная система начала узнавать эти имена, нужно настроить файл hosts. В Windows этот файл размещён по пути C:WindowsSystem32driversetchosts, а в операционной системе Linux это файл /etc/hosts. Кстати, ещё больше подробностей об этом файле вы найдёте в статье «Как настроить локальный DNS используя файл /etc/hosts в Linux».

Итак, нужно добавить записи вида:

IP_1	имя_хоста_1	короткое_имя
IP_2	имя_хоста_2
IP_3	имя_хоста_3
………

Для своего примера я добавляю такую строку:

185.117.153.79	suip	s

Сохраняю и закрываю файл hosts. Теперь я могу подключиться к данному хосту набрав следующую команду:

:/>  Ошибка «Сбой при копировании файлов загрузки» при восстановлении загрузчика Windows 10 на системах с обычным BIOS » Страница 9

ssh root@suip


Или даже в таком виде подключение также пройдёт успешно:

ssh root@s

Ещё один вариант, как добиться этого же эффекта без редактирования системного файла hosts, будет чуть ниже.

Подключение к серверу

Теперь мы готовы к работе и можем подключиться через установленное приложение к нашему хосту. Это можно осуществить либо с Windows 10, компьютера с Linux, с putty.exe на более старой машине с Windows, либо с Bash в настольной операционной системе от Microsoft. Все, что вам нужно, это найти какой-либо SSH-клиент, ввести в него имя пользователя, имя вашего сервера или IP-адрес и подключиться.

При первом подключении с неизвестного хоста будет показано следующее сообщение:

Как подключиться по SSH из Windows 10

Ответив на него yes, хост подключения будет добавлен в список известных хостов сервера. После чего необходимо ввести пароль пользователя (по соображениям безопасности вводимые символы отображаться не будут). После успешного подключения отобразится интерфейс используемой командной строки:

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

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

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

ssh root@10.8.0.1

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

Подключение по ssh с мобильного телефона

Имеется большое количество бесплатных программ для подключения к SSH — поищите в магазине приложений «ssh client». Они различаются возможностями: поддержкой работы с ключами, возможность переходить в ландшафтный режим, удобство доступа к специальным клавишам и т. д. – просто выберите любой из них, который вам больше нравится.

На этом скриншоте я с телефона подключился к настольному компьютеру по SSH и запустил программу мониторинга Wi-Fi сетей. То есть я могу управлять системой Linux и наблюдать за результатами работы программ с телефона.

Проброс stdin/out

Допустим, мы хотим сделать запрос к программе удалённо, а потом её вывод поместить в локальный файл

Проброс x-сервера

Собственно, немножко я проспойлерил эту часть в примере конфига выше. ForwardX11 — это как раз оно.

Теория: Графические приложения в юникс обычно используют X-сервер (wayland в пути, но всё ещё не готов). Это означает, что приложение запускается и подключается к X-серверу для рисования. Иными словами, если у вас есть голый сервер без гуя и есть локальный x-сервер (в котором вы работаете), то вы можете дать возможность приложениям с сервера рисовать у вас на рабочем столе.

Обычно подключение к удалённом X-серверу — не самая безопасная и тривиальная вещь. SSH позволяет упростить этот процесс и сделать его совсем безопасным. А возможность жать трафик позволяет ещё и обойтись меньшим трафиком (т.е. уменьшить утилизацию канала, то есть уменьшить ping (точнее, latency), то есть уменьшить лаги).

Ключики: -X — проброс X-сервера. -Y проброс авторизации.

Проброс авторизации

Если вы думаете, что на этом всё, то…… впрочем, в отличие от автора, у которого «снизу» ещё не написано, читатель заранее видит, что там снизу много букв и интриги не получается.

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

Для начала о простом пробросе авторизации.

Повторю картинку:

Проброс портов

Мы переходим к крайне сложной для понимания части функционала SSH, позволяющей осуществлять головоломные операции по туннелированию TCP «из сервера» и «на сервер».

Для понимания ситуации все примеры ниже будут ссылаться на вот эту схему:

Проверка

  • Проверьте изменения в каталогах обеих зон (на примере ниже в обеих зонах появилось по 2 новых записи):

Как подключиться по SSH из Windows 10

  • Откройте командную строку (cmd) или PowerShell и запустите команду nslookup:

Как подключиться по SSH из Windows 10

Процесс настройки

Запускаем «Диспетчер серверов». Находим пункт DHCP в открывающемся списке «Tools»:

Как подключиться по SSH из Windows 10

В нашем варианте мы рассматриваем выдачу IPv4 адресов, поэтому нужно создать новую область (Scope) — пул IP-адресов, выдаваемых клиентам. Нажимаем правой кнопкой мыши на IPv4 и выбираем «New Scope…»:

Как подключиться по SSH из Windows 10

Открывается Мастер создания области, где мы вводим имя пула. Если необходимо, то можно ввести описание:

Как подключиться по SSH из Windows 10

Определяем границы нашего пула, задав начальный и конечный IP-адрес. Также вводим маску подсети:

Как подключиться по SSH из Windows 10

В случае необходимости можно добавить в исключения один или несколько IP-адресов из создаваемого пула. В этом диапазоне могут находиться сетевые устройства которым уже назначен статический IP. Тут же есть параметр задержки ответа сервера перед отправкой данных на запрос от хоста:

Как подключиться по SSH из Windows 10

Далее можно указать время аренды IP-адреса. По умолчанию выставлено 8 дней:

Как подключиться по SSH из Windows 10

Теперь Мастер предложит указать сетевые параметры (Gateway, DNS, WINS), выдаваемые клиентам в сети:

Как подключиться по SSH из Windows 10

Укажем адрес сетевого шлюза:

Как подключиться по SSH из Windows 10

Следующий этап позволяет добавить WINS-сервер:

Как подключиться по SSH из Windows 10

Выбираем «Активировать» заданную нами область сейчас:

Как подключиться по SSH из Windows 10

После настройки пула можно проверить работает ли сервер. Посмотреть подключенных клиентов можно перейдя в раздел «Address Leases». В нашем случае видим, что подключено одно устройство:

Как подключиться по SSH из Windows 10

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

Как подключиться по SSH из Windows 10

Хоть мы и рассматривали настройку на Windows Server 2021, данная инструкция так же подойдет и для Windows Server 2008—2021, так как процесс не сильно отличается.

Процесс установки

  • Запустим Диспетчер серверов и выберем «Add roles and features». Выберем первый пункт «Role — based or feature — based installation»:

Как подключиться по SSH из Windows 10

  • Укажем сервер, на который будем устанавливать роль DHCP:

Как подключиться по SSH из Windows 10

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

Как подключиться по SSH из Windows 10

  • Проверяем устанавливаемые компоненты и нажимаем «Install»:

Как подключиться по SSH из Windows 10

  • После завершения установки можно начать первичную настройку DHCP. Переходим по ссылке «Complete DHCP configuration»:

Как подключиться по SSH из Windows 10

Процесс первичной настройки проходит в два этапа:

1. Создание «Группы безопасности» для управления этим DHCP—сервером. Всего их две:

2. Авторизация DHCP-сервера в Active Directory (если он присоединен к домену). Данная настройка нужна, чтобы избежать появления в сети посторонних DHCP-серверов. Сервер должен пройти авторизацию чтобы служба DHCP запустилась:

Как подключиться по SSH из Windows 10

  • Вписываем учетные данные администратора и жмем кнопку «Commit». Если сервер не присоединен к домену, то выбираем последний пункт:

Как подключиться по SSH из Windows 10

  • Если всё сделано верно, мастер оповещает об успешном выполнении настройки:

Как подключиться по SSH из Windows 10

Работаем на ос семейства linux

Используем следующий формат команд:

scp [модификатор] [источник] [место_назначения]

Если в качестве источника или места назначения указывается удаленный сервер, то формат параметра такой:

[пользователь]@[сервер]:[путь_к_файлу]

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

За одну операцию можно скопировать несколько файлов, для этого необходимо указать их в качестве источника, разделив пробелом – местом назначения будет считаться последний указанный параметр. Например, загрузить файлы file1.tgz и file2.tgz из локального каталога на удаленный сервер позволит команда:

scp file1.tgz file2.tgz root@123.123.123.123:/root

Чтобы узнать какие еще модификаторы поддерживает команда, можно просто запустить scp без параметров и прочитать краткую справку.

Работаем на ос семейства windows

Если мы подключаемся к удаленному серверу с компьютера, работающего на операционной системе Windows, то нам снова потребуется обратиться к терминальному клиенту Putty, в состав которого входит исполняемый файл plink.exe. Работать с этим файлом необходимо из командной строки (cmd.exe) или из PowerShell.

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

plink.exe [сервер] -ssh -l [пользователь] “[команда]”

Проверим конфигурацию сетевых интерфейсов:

plink.exe 123.123.123.123 -ssh -l root “ifconfig”

Как и при работе с командой SSH в Linux, plink.exe позволяет использовать “;” в качестве разделителя для запуска нескольких команд:

plink.exe 123.123.123.123 -ssh -l root “ifconfig; netstat -anp tcp”

А запуск команд из локального файла можно реализовать с помощью дополнительного ключа m:

:/>  Средства диагностики компьютера на борту Live-диска Сергея Стрельца

plink.exe 123.123.123.123 -ssh -l root -m “C:Tempmyscript.sh”

Запустив команду plink.exe без параметров, можно ознакомиться с краткой справкой по синтаксису и списком дополнительных модификаторов команды.

Создание a-записи

Данный раздел инструкции в большей степени предназначен для проверки ранее проделанных шагов.

Ресурсная запись — единица хранения и передачи информации в DNS, заключает в себе сведения о соответствии какого-либо имени с определёнными служебными данными.

Запись A — запись, позволяющая по доменному имени узнать IP-адрес.

Запись PTR — запись, обратная A записи.

  • В Диспетчере DNS выберите каталог созданной ранее зоны внутри каталога Зон Прямого Просмотра. В правой части Диспетчера, где отображается содержимое каталогов, правой кнопки мыши вызовите выпадающее меню и запустите команду «Создать узел (A или AAAA)…»:

Как подключиться по SSH из Windows 10

  • Откроется окно создания Нового Узла, где понадобится вписать в соответствующие поля имя узла (без доменной части, в качестве доменной части используется название настраиваемой зоны) и IP-адрес. Здесь же имеется чек-бокс Создать соответствующую PTR-запись — чтобы проверить работу обеих зон (прямой и обратной), чек-бокс должен быть активирован:

Как подключиться по SSH из Windows 10

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

  • Также можно добавить записи для других серверов:

Как подключиться по SSH из Windows 10

  • Добавив все необходимые узлы, нажмите Готово.

Создание архива tar.gz

Подключитесь к серверу по SSH и выполните команду:

Разархивация происходит при помощи команды:

Создание архива zip

Подключитесь к серверу по SSH и выполните команду:

В результате команды из примера будет создан архив папки /var/log со всем её содержимым. Имя созданного архива: log.zip.
Разархивировать можно будет при помощи команды:

Создание зон прямого и обратного просмотра

Доменная зона — совокупность доменных имён в пределах конкретного домена.

Зоны прямого просмотра предназначены для сопоставления доменного имени с IP-адресом.

Зоны обратного просмотра работают в противоположную сторону и сопоставляют IP-адрес с доменным именем.

Создание зон и управление ими осуществляется при помощи Диспетчера DNS.

Перейти к нему можно в правой части верхней навигационной панели, выбрав меню Средства и в выпадающем списке пункт DNS:

Как подключиться по SSH из Windows 10

Создание зоны обратного просмотра

  • Выделите в Диспетчере DNS каталог Зоны Обратного Просмотра и нажатием кнопки Новая зона на панели инструментов сверху запустите Мастер Создания Новой Зоны:

Как подключиться по SSH из Windows 10

  • Выберите тип Основная Зона, перейдите Далее:

Как подключиться по SSH из Windows 10

  • Выберите назначение для адресов IPv4, нажмите Далее:

Как подключиться по SSH из Windows 10

  • Укажите идентификатор сети (первые три октета сетевого адреса) и следуйте Далее:

Как подключиться по SSH из Windows 10

  • При необходимости поменяйте название будущего файла зоны и перейдите Далее:

Как подключиться по SSH из Windows 10

  • Выберите, разрешить динамические обновления или нет. Разрешать не рекомендуется в силу значимой уязвимости. Перейдите Далее:

Как подключиться по SSH из Windows 10

  • Проверьте правильность выбранной конфигурации и завершите настройку, нажав кнопку Готово:

Как подключиться по SSH из Windows 10

Создание зоны прямого просмотра

  • Выделите каталог Зоны Прямого Просмотра, запустите Мастер Создания Новой Зоны с помощью кнопки Новая зона на панели инструментов сверху:

Как подключиться по SSH из Windows 10

  • Откроется окно Мастера с приветствием, нажмите Далее:

Как подключиться по SSH из Windows 10

  • Из предложенных вариантов выберите Основная зона и перейдите Далее:

Как подключиться по SSH из Windows 10

  • Укажите имя зоны и нажмите Далее:

Как подключиться по SSH из Windows 10

  • При необходимости поменяйте название будущего файла зоны и перейдите Далее:

Как подключиться по SSH из Windows 10

  • Выберите, разрешить динамические обновления или нет. Разрешать не рекомендуется в силу значимой уязвимости. Перейдите Далее:

Как подключиться по SSH из Windows 10

  • Проверьте правильность выбранной конфигурации и завершите настройку, нажав кнопку Готово:

Как подключиться по SSH из Windows 10

Структура ключа

(если на вопрос про расположение ответили по-умолчанию).

~/.ssh/id_rsa.pub

— открытый ключ. Его копируют на сервера, куда нужно получить доступ.

~/.ssh/id_rsa

— закрытый ключ. Его нельзя никому показывать. Если вы в письмо/чат скопипастите его вместо pub, то нужно генерировать новый ключ. (Я не шучу, примерно 10% людей, которых просишь дать ssh-ключ постят id_rsa, причём из этих десяти процентов мужского пола 100%).

Туннелирование

Если к этому моменту попа отдела безопасности не сияет лысиной, а ssh всё ещё не внесён в список врагов безопасности номер один, вот вам окончательный убийца всего и вся: туннелирование IP или даже ethernet. В самых радикальных случаях это позволяет туннелировать dhcp, заниматься удалённым arp-спуфингом, делать wake up on lan и прочие безобразия второго уровня.

Подробнее описано тут: www.khanh.net/blog/archives/51-using-openSSH-as-a-layer-2-ethernet-bridge-VPN.html

(сам я увы, таким не пользовался).

Легко понять, что в таких условиях невозможно никаким DPI (deep packet inspection) отловить подобные туннели — либо ssh разрешён (читай — делай что хочешь), либо ssh запрещён (и можно смело из такой компании идиотов увольняться не ощущая ни малейшего сожаления).

Управление ключами

Теория в нескольких словах: ssh может авторизоваться не по паролю, а по ключу. Ключ состоит из открытой и закрытой части. Открытая кладётся в домашний каталог пользователя, «которым» заходят на сервер, закрытая — в домашний каталог пользователя, который идёт на удалённый сервер.

Половинки сравниваются (я утрирую) и если всё ок — пускают. Важно: авторизуется не только клиент на сервере, но и сервер по отношению к клиенту (то есть у сервера есть свой собственный ключ). Главной особенностью ключа по сравнению с паролем является то, что его нельзя «украсть», взломав сервер — ключ не передаётся с клиента на сервер, а во время авторизации клиент доказывает серверу, что владеет ключом (та самая криптографическая магия).

Установка openssh в windows server 2021

Открываем SettingsApps & featuresManage optional features:

Как подключиться по SSH из Windows 10

Нажимаем Add a feature, ищем OpenSSH ServerInstall:

Как подключиться по SSH из Windows 10

На предыдущем экране дожидаемся окончания процесса инсталляции. OpenSSH сервер можем считать установленным.

Обращаем внимание, что установка этим методом автоматически создаст правило Windows Firewall, с названием «OpenSSH-Server-In-TCP», открывающее 22 порт для входящих подключений.

Используя PowerShell:

Проверим, присутствует ли на нашей системе встроенный OpenSSH:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

В ответ должны получить:

Name : OpenSSH.Client~~~~0.0.1.0
State : NotPresent #или Install, если клиент уже установлен
Name : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

Устанавливаем клиент, если он не установлен:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Для установки сервера вводим:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

В обоих случаях вывод должен быть следующим:

Path :
Online : True
RestartNeeded : False

Установка роли dns-сервера

Для установки дополнительных ролей на сервер используется Мастер Добавления Ролей и Компонентов, который можно найти в Диспетчере Сервера.

На верхней навигационной панели Диспетчера сервера справа откройте меню Управление, выберите опцию Добавить Роли и Компоненты:

Как подключиться по SSH из Windows 10

Откроется окно Мастера, в котором рекомендуют убедиться что:

1. Учётная запись администратора защищена надёжным паролем.

2. Настроены сетевые параметры, такие как статические IP-адреса.

3. Установлены новейшие обновления безопасности из центра обновления Windows.

Убедившись, что все условия выполнены, нажимайте Далее;

Выберите Установку ролей и компонентов и нажмите Далее:

Как подключиться по SSH из Windows 10

Выберите необходимый сервер из пула серверов и нажмите Далее:

Как подключиться по SSH из Windows 10

Отметьте чек-боксом роль DNS-сервер и перейдите Далее:

Как подключиться по SSH из Windows 10

Проверьте список компонентов для установки, подтвердите нажатием кнопки Добавить компоненты:

Как подключиться по SSH из Windows 10

Оставьте список компонентов без изменений, нажмите Далее:

Как подключиться по SSH из Windows 10

Прочитайте информацию и нажмите Далее:

Как подключиться по SSH из Windows 10

В последний раз проверьте конфигурацию установки и подтвердите решение нажатием кнопки Установить:

Как подключиться по SSH из Windows 10

Финальное окно Мастера сообщит, что установка прошла успешно, Мастер установки можно закрыть:

Как подключиться по SSH из Windows 10

Финал


Разумеется, в посте про туннели должен быть туннель, а в любой успешной статье — секретный ингредиент всеобщей популярности. Держите:

Как подключиться по SSH из Windows 10

Передача стандартного вывода с локальной машины на удалённую по ssh

Не менее интересный вариант выполнения команд будет приведён немного ниже:

cat .ssh/id_rsa.pub | ssh mial@192.168.1.36 'cat >> .ssh/authorized_keys'

Команда cat построчно считывает и отображает содержимое файла .ssh/id_rsa.pub, расположенного на локальной машине.

| (труба) передаёт то, что должно было бы появиться в стандартном выводе, другой команде.


Вместо команды, которая должна была бы обрабатывать передаваемые ей строки, происходит соединение к удалённой системе (ssh mial@192.168.1.36).

На удалённую систему приходят строки, для которых предусмотрена команда cat >> .ssh/authorized_keys. Т.е. содержимое стандартного вывода построчно записывается в файл .ssh/authorized_keys, находящийся на удалённой машине.

Оставьте комментарий