Both sides previous revisionPrevious revisionNext revision | Previous revision |
ssh-сервер_на_windows [2025/04/14 12:00] – jp | ssh-сервер_на_windows [2025/10/01 14:04] (current) – jp |
---|
===== SSH-сервер на Windows ===== | ===== SSH-сервер на Windows ===== |
| |
На Windows, начиная с серверной редакции Windows Server 2019 и десктопной версии Windows 10 1803 - доступен SSH-сервер в качестве отдельного //on-demand// компонента. | На //Windows//, начиная с серверной редакции //Windows Server 2019// и десктопной версии //Windows 10 1803// - доступен //SSH//-сервер в качестве отдельного //on-demand// компонента. |
| |
Установить его можно следующим образом: | Установить его можно следующим образом: |
| |
https://github.com/PowerShell/Win32-OpenSSH/releases/ | https://github.com/PowerShell/Win32-OpenSSH/releases/ |
| |
Проверить установку можно так: | Проверить установку можно так: |
| |
Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Ser*' | Get-WindowsCapability -Online | ? Name -like 'OpenSSH.Ser*' |
После установки можно сделать автоматический запуск службы + запустить сервис. | Если установщик по каким-либо причинам не сделал автозапуск службы, делаем и запускаем сервис. |
| |
Set-Service -Name sshd -StartupType 'Automatic' | Set-Service -Name sshd -StartupType 'Automatic' |
Start-Service sshd | Start-Service sshd |
Для работы SSH-сервера через FW можно создать соответствующее правило командой: | Для работы SSH-сервера через FW можно создать соответствующее правило командой (установщик, вероятно, уже его создал): |
| |
<WRAP prewrap> | <WRAP prewrap> |
;#; | ;#; |
| |
| Разрешения можно установить и на конкретного пользователя, а не только на группу. В этом случае директива будет выглядеть так: |
| |
| AllowUsers "ARASAKA\jp" |
| :!: ВАЖНО. Здесь используется короткое имя домена (//pre-windows 2000//). Его можно посмотреть в свойствах домена в //AD DS//. |
=== Замена оболочки CMD === | === Замена оболочки CMD === |
| |
</code> | </code> |
</WRAP> | </WRAP> |
{{tag>Microsoft Windows Firewall SSH PowerShell}} | === Подключение с ипользованием SecureCRT === |
| Если мы постоянно подключаемся к Exchange через, скажем, //SecureCRT// - очень удобно автоматизировать запуск команды при подключении, чтобы не вводить её вручную каждый раз. Пример: |
| |
| ;#; |
| {{:soft:logon_ssh_windows_ems.jpg?600|}} |
| ;#; |
| |
| Здесь для запуска командлетов //Exchange// - прописана такая команда: |
| |
| Add-PSsnapin Microsoft.Exchange.Management.PowerShell.E2010 |
| |
| :!: ВПРОЧЕМ, такой способ не является полноценным подключением к //EMS//. В этом случае, скорее всего не будут корректно работать командлеты, запуск которых предполагается вне локального сервера. К примеру, если у нас несколько //Exchange// с распределенными базами и почтовый ящик пользователя находится не на том сервере, к которому мы подключились по //SSH// - командлет завершится с ошибкой. |
| |
| Стандартный //EMS// shell, запускаемый в Windows умеет это разруливать. Корректным полноценным способом подключения к //EMS// по //SSH// из //SecureCRT// - будет запуск скрипта //RemoteExchange.ps// и последующее использование командлета //Connect-ExchangeServer// сразу же после соединения по //SSH//. Таким образом, нам необходимо добавить два send-действия в SecureCRT, которые выглядят так: |
| |
| 1. . 'C:\\Program Files\\Microsoft\\Exchange Server\\V15\\bin\\RemoteExchange.ps1' |
| 2. Connect-ExchangeServer -auto -ClientApplication:ManagementShell |
| Пример: |
| ;#; |
| {{:soft:connect_exchange_securecrt_remoteps.jpg|}} |
| ;#; |
| |
| ---- |
| ==== Решение проблем ==== |
| |
| === Меняем поведение backspace === |
| |
| На одном из серверов с //OpenSSH// под //Windows// возникла странная проблема. С установленным //DefaultShell// = //PowerShell//, при подключении из //SecureCRT// - клавиша //BACKSPACE// удаляла слова целиком, а по нажатии //CTRL + BACKSPACE// - удалялись символы, т.е. привычное поведение клавиш было перепутано. При этом, сессия для проверки была полностью скопирована с похожего сервера, в её свойствах был заменен исключительно хост подключения. Единственное решение, которое помогло - сделать кастомный ремаппинг в терминале. Делаем следуюшее в //Mapped Keys//: |
| |
| CTRL + BACKSPACE: \010 |
| BACKSPACE: \177 |
| Пример на скрине: |
| ;#; |
| {{:soft:sec_crt_backspace_remap.jpg|}} |
| ;#; |
| {{tag>Microsoft Windows Firewall SSH PowerShell ActiveDirectory SecureCRT}} |