- Руководство: SSH в Терминале Windows Tutorial: SSH in Windows Terminal
- Создание профиля Create a profile
- Указание начального каталога Specify starting directory
- Как подключиться по SSH из Windows 10
- Подключение по SSH с помощью OpenSSH
- Подключение по SSH через PuTTY
- Как подключиться к Windows по SSH через интернет?
- Что такое SSH и зачем он нужен?
- Как ещё можно запустить SSH на Windows?
- Как открыть снаружи SSH-порт?
- Проброс порта на роутере или модеме
- Проброс порта на удалённый сервер с помощью SSH-туннеля
- Как проверить правильно ли проброшен порт?
- Похожие статьи
- Комментариев
Руководство: SSH в Терминале Windows Tutorial: SSH in Windows Terminal
В Windows 10 встроен клиент SSH, который можно использовать в Терминале Windows. Windows 10 has a built-in SSH client that you can use in Windows Terminal.
В этом руководстве содержатся сведения о настройке профиля в Терминале Windows, использующем SSH. In this tutorial, you’ll learn how to set up a profile in Windows Terminal that uses SSH.
Создание профиля Create a profile
Вы можете запустить сеанс SSH в командной строке, выполнив ssh user@machine . После этого вам будет предложено ввести пароль. You can start an SSH session in your command prompt by executing ssh user@machine and you will be prompted to enter your password. Вы можете создать профиль Терминала Windows, выполняющий этот процесс при запуске, добавив параметр commandline в профиль в файле settings.json file. You can create a Windows Terminal profile that does this on startup by adding the commandline setting to a profile in your settings.json file.
Указание начального каталога Specify starting directory
Чтобы указать начальный каталог для сеанса SSH, вызываемого с помощью Терминала Windows, можно использовать следующую команду: To specify the starting directory for a ssh session invoked by Windows Terminal, you can use this command:
Флаг -t приводит к выделению псевдотерминала. The -t flag forces pseudo-terminal allocation. Эту возможность можно использовать для выполнения произвольных интерактивных программ на удаленном компьютере, например при реализации служб меню. This can be used to execute arbitrary screen-based programs on a remote machine, e.g. when implementing menu services. Вам потребуется использовать экранированные двойные кавычки, так как производные оболочки Bourne shell не выполняют дополнительную обработку строки в одинарных кавычках. You will need to use escaped double quotes as bourne shell derivatives don’t do any additional parsing for a string in single quotes.
Дополнительная информация: For more information, see:
Как подключиться по SSH из Windows 10
Для настройки и управления удаленными серверами на базе Linux обычно используется протокол SSH. С помощью SSH на удаленный компьютер можно передавать данные и команды, которые будут выполняться так как бы они выполнялись на локальной машине.
В этой инструкции мы рассмотрим процесс подключения к SSH из Windows 10. Первый способ будет актуален для Windows 10 версии 1809 и выше, а второй можно использовать как на Windows 10, так и на Windows 7.
Подключение по SSH с помощью OpenSSH
Раньше для подключения к Linux серверу по SSH из Windows компьютера требовалась установка программы PuTTy или какого-то другого SSH-клиента. Но, в операционной системе Windows 10 (начиная с версии 1809 ) доступен клиент OpenSSH, с помощью которого можно подключаться к Linux серверам по SSH. Это позволяет работать с терминалом Linux прямо из командной строки Windows 10, при этом не требуется установка никаких сторонних программ.
Перед тем как использовать данный способ подключения необходимо проверить версию Windows 10. Для этого нажмите комбинацию клавиш Win-R и выполните команду « winver ». Если на вашем компьютере установлена Windows 10 с версией 1809 или выше, то все нормально, в противном случае сначала нужно выполнить обновление.
Также нужно открыть меню « Параметры » и зайти в раздел « Приложения – Дополнительные возможности ».
Здесь нужно пролистать список установленных дополнительных компонентов и найти в нем « Клиент OpenSSH ». Если такой компонент присутствует, значит все нормально и можно переходить к следующему шагу. Если нет, то его нужно сначала установить с помощью меню « Добавить компонент ».
Обратите внимание, не нужно путать « Клиент OpenSSH » и « Сервер OpenSSH ». Для подключения по SSH вам нужен именно клиент.
Также клиент OpenSSH можно установить с помощью PowerShell. Для этого запустите консоль PowerShell с правами администратора и выполните следующую команду:
Более подробно об установке и удалении клиента OpenSSH можно почитать в официальной документации Майкрософт.
Если версия Windows 10 подходящая и клиент OpenSSH установлен, то можно начинать подключение по SSH. Для этого запустите обычную командную строку Windows и введите команду « ssh ». В ответ вы должны получить информацию о работе с данной командой.
В общем случае синтаксис команды « ssh » выглядит следующем образом:
Где « user » — это имя пользователя на удаленном сервере, а « server » — это имя компьютера или его ip адрес.
Например, если наш сервер доступен по ip адресу « 192.168.1.214 », а имя пользователя это « aleks », то команда для подключения будет выглядеть так:
После ввода данной команды появится запрос пароля и после этого мы получим доступ к удаленному серверу. Также при первом подключении с помощью ssh будет появляться запрос на добавление сервера в список известных.
По умолчанию для SSH используется порт 22. Для того чтобы это изменить нужно использовать параметр « -p ». Например, для подключения по порту 2222 нужно выполнить вот такую команду.
Если подключение предполагает использование ключей, то они должны находиться в папке « C:\Users\user\.ssh ». А при подключении путь к приватному ключу нужно указать с помощью параметра « -i ». Например, чтобы использовать ключ « C:\Users\stepu\.ssh\id_rsa » нужно выполнить:
Более подробную информацию о команде « ssh » и ее параметрам можно получить на сайте man.openbsd.org/ssh или на opennet.ru (перевод).
Подключение по SSH через PuTTY
В тех случаях, когда версия Windows 10 не поддерживает OpenSSH (или используется Windows 7) к SSH можно подключаться с помощью программы PyTTY. Скачать установщик данной программы можно на официальном сайте www.putty.org.
После установки программы PyTTY ее можно будет запустить с помощью поиска в меню « Пуск »
Сразу после запуска программы PuTTY появляется окно с настройками подключения. Основными параметры здесь находятся на вкладке « Session », здесь нужно ввести:
- Имя компьютера или IP адрес;
- Порт для подключения (по умолчанию, 22);
- Способ подключения (SSH);
После ввода этих данных можно запускать подключение с помощью кнопки « Open ».
Если для подключения к SSH используются ключи, то путь к приватному ключу нужно указать в разделе « Connection – SSH – Auth ».
Обратите внимание, ключ должен быть сгенерирован программой PuTTYgen, которая устанавливается вместе с PuTTY. Если вы сгенерировали ключи с помощью OpenSSH, то их можно загрузить в PuTTYgen и сохранить в формате подходящем для PuTTy.
Если информация для подключения правильная, то вы увидите консоль с запросом на ввод имени пользователя пароля. Также при первом запуске появится запрос на добавление компьютера в список известных.
После ввода этих данных вы будете подключены к удаленному серверу по SSH.
Как подключиться к Windows по SSH через интернет?
Читатель нашего сайта спрашивает:
Здравствуйте! Интересует вопрос: как подключиться по SSH к домашнему компьютеру через интернет. Дома установлен FreeSSHd сервер. Я так понимаю надо как-то открыть порт 22 на внешнем IP? Alex
Да, часто возникает необходимость подключиться к компьютеру через интернет. Я в той статье много о чём рассказывал, а здесь мы будем говорить исключительно об SSH, раз уж Alex любезно предоставил нам эту возможность. К тому же, мне самому безумно интересен SSH, а здесь ещё и на Windows… ммм.
Что такое SSH и зачем он нужен?
Дело в том, что SSH — это Secure SHell. Протокол для безопасного доступа к оболочке управления. Поэтому оно предоставляет доступ именно к командной строке, ибо Shell — переводится как оболочка и здесь в значении текстовая оболочка управления. Но вообще, этот протокол примечателен тем, что он позволяет пропускать внутри себя любой другой трафик, причем в зашифрованном виде. Так, протокол безопасного подключения к файловой системе называется SFTP и работает поверх SSH. Но может туннелировать абсолютно любые другие соединения — будь то HTTP или даже RDP. По сути получается «VPN на коленке».
Здесь Алекс уже сделал полдела, он установил и запустил на домашнем компьютере FreeSSHd. Это позволяет подключиться к Windows по SSH. В данном случае — «позволяет» — это сказано очень сильно. Потому как это решение работает на Виндовс кое-как. Во-первых, у неё нет приличного текстового интерфейса — командной строки, для управления.
По крайней мере штатный — cmd — мало что позволяет сделать с удалённой машиной. Есть ещё Powershell — это уже более современное и мощное решение. Freesshd позволяет сменить консоль на powershell, но я к ней так и не смог подключиться. К CMD подключился — но это совершенно неюзабельно:
Во-вторых, в случае с FreeSSHd у меня не получилось подключиться к компьютеру с Windows даже по локальной сети, не говоря уже о подключении через интернет. Вернее, подключиться получается, но сервис зависает и вылетает, управлять Windows-хостом таким образом не получится.
Завис freesshd и вылетел при подключении
Поэтому, я предполагаю, что Алексу понадобился ssh-сервер на Windows для подключения к файловой системе или использования её в качестве VPN, проксирования чего-либо поверх SSH. Хотя я и сомневаюсь, что FreeSSHd позволит это делать. Ибо в-третьих: он даже не сохраняет настройки, при перезапуске сервиса всё сбивается. В общем, я очень надеюсь, что Алекс расскажет нам в комментариях о том, зачем это ему понадобилось.
Как ещё можно запустить SSH на Windows?
Есть более работоспособное решение — Powershelserver. Хотя в нём тоже есть баги, но оно хотя бы не вылетает. Поэтому я бы рекомендовал использовать именно его для подключения по SSH к виндовым серверам.
Скачал и установил powershellserver
Во-первых, он стабильно работает без вылетов. И через него действительно можно управлять windows через powershell.
Включил нужные опции и запустил
Все настройки нормально сохраняются. Доступны те же функции что и в FreeSSHd и даже больше — можно использовать SCP — это копирование файлов поверх SSH.
Но самый шик — это консоль! Она работает, господа!
Я легко подключился, без всяких плясок с добавлением пользователей (это нужно делать во freesshd). И та простейшая команда на просмотр таблицы маршрутизации прекрасно отработала и выдала нужную инфу. Фриссш у меня «упал» именно при попытке просмотра netstat -rn
Здесь правда видно что не отображаются русские символы. Так у нас это легко настроить, просто выставляю нужную мне кодировку на powershellserver, перезапускаю, переподключаюсь…
Настройка кодировки в Powershellserver
Подключение к консоли Windows по SSH!
Теперь мы имеем полноценный SSH и можем полностью управлять Windows через консоль.
Кстати, Microsoft eщё летом объявила о том, что собирается разработать нативную поддержку SSH для Powershell в новых версиях Windows. Есть анонсы новости на хабре и на pcweek(и ещё). Поэтому нам только остаётся ждать с нетерпением этого знакового события, поскольку это действительно будет прорывом для работы в гетерогенных сетях.
Я не стал проверять остальные функции — sftp и scp, но почему-то уверен, что они тоже будут прекрасно работать.
Как открыть снаружи SSH-порт?
Итак, мы подобрались к тому сокровенному, ради чего вообще и затеялась эта статья. Ответу на вопрос читателя.
Проброс порта на роутере или модеме
Для подключения к компьютеру извне, действительно нужно сделать NAT, или, в частном случае PAT — проброс порта с локальной машины на внеший IP-адрес. Как это сделать зависит от устройства, которое используется в качестве шлюза. Это может быть ADSL-модем или домашний роутер. В большинстве случаев подробные инструкции для вашего девайса легко найти по запросам типа «проброс порта модель_устройства» или «port forwarding модель_устройства»
Вот так это выглядит на моем домашнем роутере Zyxel Keenetic Lite :
Как открыть порты для подключения снаружи на Zyxel Keenetic
А вот так это выглядит на ADSL-модеме c функционалом роутера Linksys WAG200G, оказавшимся под рукой:
Кроме того, у некоторых провайдеров это может быть невозможно сделать технически, поскольку они не предоставляют «белый» внешний IP-адрес.
Проброс порта на удалённый сервер с помощью SSH-туннеля
В таком случае, для подключения по SSH может быть доступен единственный способ — туннель с локальной Windows-машины (той самой, к которой хотим подключиться по SSH) на удалённый сервер. В этом случае у вас должен быть SSH-доступ к какому-то серверу в интернете.
Настройка «обратного» туннеля SSH
Такой проброс легко сделать с помощью простого SSH-клиента Putty (есть и альтернативные ssh-клиенты) Затем можно будет подключиться на этом самом удалённом сервере через проброшенный порт.
Подключение Windows по SSH через обратный туннель
Ну если вам нужно расшарить SSH-порт винды в мир, достаточно в настройках обратного туннеля в качестве destination указать не localhost:3322, а ip_server:3322. Сможете подключаться к винде по SSH отовсюду, где есть доступ к этому самому серверу.
Как проверить правильно ли проброшен порт?
Очень просто. Нужно проверить открыт ли он. В случае с SSH открытый порт будет отвечать сообщением о своей версии. Самый простейший способ проверки порта — утилита telnet.
Просто наберите в командной строке через пробел:
Если порт доступен, то вы увидите что-то вроде такого:
Ответ SSH если порт доступен
Если порт по каким-то причинам недоступен — то вы увидите либо «connection refused» либо «connection timeout». В первом случае это будет мгновенно, и означает что порт закрыт файрволом.
Во втором случае это будет похоже на «зависание» и может длиться до нескольких минут — телнет-клиент будет пытаться установить соединение. Это может означать также блокировку файрволлом, но уже другого типа. Либо просто что указанный хост недоступен или порт на нём закрыт.
Если вы смогли подключиться телнетом, то нажмите комбинацию клавиш Ctrl+] и введите quit, затем Enter. Иначе не получится прервать сессию и придётся открывать новое окно консоли, если она вам ещё нужна.
Admin
IT-cпециалист с высшим техническим образованием и 8-летним опытом системного администрирования. Подробней об авторе и контакты. Даю бесплатные консультации по информационным технологиям, работе компьютеров и других устройств, программ, сервисов и сайтов в интернете. Если вы не нашли нужную информацию, то задайте свой вопрос!
Похожие статьи
Комментариев
Как открыть порт 3322 на компе?
Здравствуйте. Спасибо за ответ!
SSH туннель решил поднять на домашнем компьютере, чтобы к нему цепляться из любой точки доступа, как с чужого компа, так и с телефона, только в целях безопасности, пока нахожусь в интернете. Сами понимаете, что открытые точки Wi-Fi не безопасны.
По поводу сервера FreeSSHd: установленная версия 1.3.1, подключался через PuTTY от друга по локалке — всё работает, как сам туннель, так и Shell, и SFTP (для этого протокола использовал программу WinSCP).
По настройкам сервера — выключен Telnet, авторизация пользователя только по паролю. Пытался авторизоваться по ключам, созданным в PuTTY, но почему-то не подключается, как с паролем на сами ключи, так и без него. Появлялась ошибка: «Server refused public-key signature despite accepting key!». Ключи по разному пробовал составлять и с разной длинной (удалял лишние строки в начале и конце ключа, выстраивал ключ в одну строку — всё никак).
Не большие подробности относительно ситуации на моём компьютере: роутера и модема нет, я подключён по витой паре сразу в ноутбук, и нахожусь за NAT провайдера, ip предоставляется серый динамический, поэтому и хочу узнать как же подключится по интернету. Извиняюсь, что сразу не написал..
При попытке подключиться на внешний ip (смотрел на 2ip.ru) соответственно подключения не было.
Интересует ещё вопрос: при подключении по SSH туннелю, трафик сразу шифруется или на компе-сервере надо ещё ставить прокси-сервер?
Прокси с шифрованием через домашний компьютер. Теперь всё понятно. Вы просто хотите сделать для себя прокси таким замысловатым способом 🙂 Но всё же, это имеет смысл, только в тех случаях, если у вас есть прямой доступ по SSH без бубна. Учитывая серый IP от провайдера, у вас вообще невозможно подключаться к домашнему компьютеру без сервера с «белым» ip-адресом и прямым доступом по SSH. Ну а если есть такой сервер, то необходимость в домашнем компьютере вообще отпадает можно использовать сразу сервер.
В Вашем случае проще купить доступ к персональному прокси и использовать его для этих целей. Они сейчас $1-$2 в месяц стоят, не больше.
Если же вы хотите использовать именно SSH-туннели, то я бы порекомендовал взять самый дешёвый тариф у хостера, предоставляющего доступ по SSH. Тогда вы сможете осуществить всё задуманное и даже больше. Я, например, использую дешёвый безлимитный хостинг от HTS всего за 90 рублей в месяц уже четвертый год .
Да, SSH сам по себе шифрует абсолютно всё, что пропускает через себя. При использовании туннелей прокси не нужен, ибо ваш туннель сам по себе будет работать уже как Socks-прокси. А по поводу ключей, попробуйте всё же powershelserver.