Я установил OpenSSH на двух своих серверах Windows, используя Chocolatey. Я использую его для автоматизации развертывания из моих ящиков Linux. Я также хотел бы иметь возможность использовать SSH в PowerShell на этих машинах, а не в командной строке. На одном работает нормально, а на другом отказывается работать. У них точно такая же конфигурация, насколько я могу судить.
C:\ProgramData\ssh\sshd_config одинаков для обоих серверов:
# Это общесистемный файл конфигурации сервера sshd. Видеть
# sshd_config(5) для получения дополнительной информации.
# Стратегия, используемая для опций в sshd_config по умолчанию, поставляемой с
# OpenSSH должен указать параметры со значением по умолчанию, где
# возможно, но оставьте их комментариями. Незакомментированные параметры переопределяют
# значение по умолчанию.
#Порт 22
#AddressFamily любой
#ListenAddress 0.0.0.0
#ListenAddress ::
#HostKey __PROGRAMDATA__/ssh/ssh_host_rsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_dsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ecdsa_key
#HostKey __PROGRAMDATA__/ssh/ssh_host_ed25519_key
# Шифры и ключи
#RekeyLimit по умолчанию нет
# Логирование
#SyslogFacility АУТЕНТИФИКАЦИЯ
#LogLevel ИНФОРМАЦИЯ
# Аутентификация:
#LoginGraceTime 2 м
#PermitRootLogin запретить пароль
#Строгиережимы да
#MaxAuthTries 6
#МаксСеансов 10
PubkeyAuthentication да
# По умолчанию проверяются оба .ssh/authorized_keys и .ssh/authorized_keys2
# но это переопределено, поэтому при установке будут проверяться только .ssh/authorized_keys
Файл авторизованных ключей .ssh/authorized_keys
#AuthorizedPrincipalsFile нет
# Для этого вам также понадобятся ключи хоста в %programData%/ssh/ssh_known_hosts
#HostbasedAuthentication нет
# Измените на yes, если вы не доверяете ~/.ssh/known_hosts для
# Аутентификация на основе хоста
#IgnoreUserKnownHosts нет
# Не читать пользовательские файлы ~/.rhosts и ~/.shosts
#ИгнорироватьRhosts да
# Чтобы отключить туннелируемые пароли в открытом виде, измените здесь на no!
ПарольАутентификация нет
#PermitEmptyPasswords нет
# Параметры GSSAPI
#GSSAPIAНомер аутентификации
#AllowAgentForwarding да
#AllowTcpForwarding да
#GatewayPorts нет
#PermitTTY да
#PrintMotd да
#PrintLastLog да
#TCPKeepAlive да
#UseLogin нет
#PermitUserEnvironment нет
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS нет
#PidFile /var/run/sshd.pid
#Макс.Запусков 10:30:100
#PermitTunnel нет
#ChrootDirectory нет
#VersionAddendum нет
# нет пути к баннеру по умолчанию
#Баннер нет
# переопределить значение по умолчанию отсутствия подсистем
Подсистема sftp sftp-server.exe
# Пример переопределения настроек для каждого пользователя
#Соответствие пользователю anoncvs
# AllowTcpForwarding нет
# РазрешитьTTY нет
# cvs-сервер ForceCommand
#Соответствие администраторам группы
# AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys
C:\Users\Nacht.ssh\authorized_keys то же самое:
command="C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC+jD0xfG/ZG1syjec5VWou4Sc/eDmtqPAZTy7OUbUSLxd0dCcbo5tQmzxeteSMEDMRR51Uqf9H+LuBVdf+l0CRQLMnsp1sZp5abOJoQJPvEcBHuAJZYknXc3TxvmULsSBRNKJu9yu9MIHde2PB9yrTONxwYTCqDjRibZyAUPJbv6S8SDMrf9/4E3eeOo4efOFM5Vp+bGs5BcHqSK5lDnWhoB3acqjo0zOUZk+mVTxjoCUCMBvh3I6V7tqK8+OMmM8XH0ELsCiM47wFcGS3/usj4K0OaMiylBmai0A4HM3vuXZzHoJvpB4b+N+O5lki8kwFPf8lwpgjukR/NC8wxcwR nacht@savage
Я тестирую из коробки Linux. Когда я подключаюсь по ssh к первому серверу, я получаю приглашение PowerShell, как и ожидалось. Когда я подключаюсь по ssh ко второму серверу, я получаю приглашение cmd.Я нигде не могу найти никаких ошибок, журналы событий показывают одно и то же содержимое для обоих серверов в категории «OpenSSH/Operational», но на втором сервере отсутствуют все журналы в категории «Windows PowerShell» при запуске PowerShell.
На серверах Windows это то, что я запускал, чтобы установить OpenSSH:
choco установить openssh -y
. "C:\Program Files\OpenSSH-Win64\install-sshd.ps1"
запуск службы sshd
New-NetFirewallRule -DisplayName "SSH" -Входящее направление -Protocol TCP -LocalPort 22 -Action Allow
Chocolatey сообщает, что на обоих установлена одна и та же версия openssh: openssh 8.0.0.1 [Одобрено]
Что может отличаться между этими двумя серверами, что может привести к тому, что параметр команды будет работать для одного, а не для другого?