Я успешно настроил сервер и клиент OpenSSH, работающие через раздел дополнительных функций Windows 10.
Всякий раз, когда я пытаюсь войти на сервер, меня просят ввести пароль. Я настроил только один пароль для своего ПК с Windows 10, и это пароль моей учетной записи Microsoft. Но сервер отказывает в доступе с этим паролем. Я пока не настроил пароль для сервера SSH.
Какой пароль по умолчанию для сервера?
Вот содержимое файла sshd_config
в %PROGRAMDATA%\ssh\
папке:
# This is the sshd server system-wide configuration file. See
# sshd_config(5) for more information.
# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented. Uncommented options override the
# default value.
#Port 22
#AddressFamily any
#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
# Ciphers and keying
#RekeyLimit default none
# Logging
#SyslogFacility AUTH
#LogLevel INFO
# Authentication:
#LoginGraceTime 2m
#PermitRootLogin prohibit-password
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
#PubkeyAuthentication yes
# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys
#AuthorizedPrincipalsFile none
# For this to work you will also need host keys in %programData%/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes
# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#PermitUserEnvironment no
#ClientAliveInterval 0
#ClientAliveCountMax 3
#UseDNS no
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none
# no default banner path
#Banner none
# override default of no subsystems
Subsystem sftp sftp-server.exe
# Example of overriding settings on a per-user basis
#Match User anoncvs
# AllowTcpForwarding no
# PermitTTY no
# ForceCommand cvs server
Это вывод Get-NetFirewallRule -Name *ssh*
:
Name : OpenSSH-Server-In-TCP
DisplayName : OpenSSH SSH Server (sshd)
Description : Inbound rule for OpenSSH SSH Server (sshd)
DisplayGroup : OpenSSH Server
Group : OpenSSH Server
Enabled : True
Profile : Any
Platform : {}
Direction : Inbound
Action : Allow
EdgeTraversalPolicy : Block
LooseSourceMapping : False
LocalOnlyMapping : False
Owner :
PrimaryStatus : OK
Status : The rule was parsed successfully from the store. (65536)
EnforcementStatus : NotApplicable
PolicyStoreSource : PersistentStore
PolicyStoreSourceType : Local
Name : SshProxy-Service
DisplayName : SshProxy-Service-Private
Description : SSH Server Proxy Service
DisplayGroup : Ssh Server
Group : Ssh Server
Enabled : True
Profile : Private
Platform : {}
Direction : Inbound
Action : Allow
EdgeTraversalPolicy : Block
LooseSourceMapping : False
LocalOnlyMapping : False
Owner :
PrimaryStatus : OK
Status : The rule was parsed successfully from the store. (65536)
EnforcementStatus : NotApplicable
PolicyStoreSource : PersistentStore
PolicyStoreSourceType : Local
Name : SshProxy-Service-Domain
DisplayName : SshProxy-Service-Domain
Description : SSH Server Proxy Service
DisplayGroup : Ssh Server
Group : Ssh Server
Enabled : True
Profile : Domain
Platform : {}
Direction : Inbound
Action : Allow
EdgeTraversalPolicy : Block
LooseSourceMapping : False
LocalOnlyMapping : False
Owner :
PrimaryStatus : OK
Status : The rule was parsed successfully from the store. (65536)
EnforcementStatus : NotApplicable
PolicyStoreSource : PersistentStore
PolicyStoreSourceType : Local
Вывод [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
:
<my_name>\USER
решение1
Я еще не установил пароль для SSH-сервера. Какой пароль по умолчанию для сервера?
Ни одного нет.
Всякий раз, когда я пытаюсь войти на сервер, меня просят ввести пароль. Я настроил только один пароль для своего ПК с Windows 10, и это пароль моей учетной записи Microsoft. Но сервер отказывает в доступе с этим паролем.
Вы пытаетесь подключиться с неправильным именем пользователя. Вы должны использовать ssh Machine_Name\Username@localhost
для подключения к серверу.
Зачем мне нужно указывать часть \USER?
Вам необходимо явно указать, какое имя пользователя вы хотите использовать для подключения к серверу OpenSSH. Вы также указали, что использовали синтаксис, ssh <my_name>@localhost
который указывает, что имя пользователя было именем вашей машины, а не вашим фактическим именем пользователя.
С<my_name>
не является реальным именем пользователя на машине, аутентификация по паролю не удалась, вам на самом деле нужно использоватьUsername
и явно указать, что это на машинеMachine_Name\Username
.
Вывод [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
укажет, что следует использовать.
решение2
Другая причина, по которой он может не принять действительное имя пользователя и пароль, — это неправильная настройка оболочки.
Вы можете проверить, что это такое, с помощью
reg query HKLM\SOFTWARE\OpenSSH /v DefaultShell
Чтобы установить Powershell, если он находится в каталоге по умолчанию:
reg add HKLM\SOFTWARE\OpenSSH /v DefaultShell /d C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe
решение3
Напишите
whoami
в cmd, он даст вам текст, скопируйте весь текст, под целым я подразумеваю весь. Для этого примера, предположим, что я получилnick\hp
в качестве вывода.Теперь в cmd введите
ssh nick\hp@localhost
и нажмите Enter.Он запросит пароль, введите пароль вашей учетной записи Microsoft здесь. И вы успешно войдете по ssh.
решение4
У меня была похожая проблема. Вход по ssh работал нормально до одного дня. Не уверен, что именно произошло. Возможно, я пытался расшарить папку Windows через Samba и тем самым испортил некоторые настройки OpenSH. В любом случае, вот решение:
Создать нового пользователя Windows
Вот и все. Я могу нормально войти с новой учетной записью. Похоже, что пароль ssh для старой учетной записи изменился без моих действий.