Я не думаю, что существует способ сделать это со всего одним ssh сервером. Я думаю, что больший вопрос состоит в том, почему Вы хотите сделать это? Есть ли некоторая процедурная причина, которую Вы не можете только запретить паролям и использовать открытые ключи все время?
Одним путем Вы могли сделать, это должно выполнить два sshd экземпляра на сервере с отдельными конфигурациями и на различных портах. Используйте iptables для предоставления доступа к одному серверу в одном интерфейсе и один на другом, Набор один, чтобы позволить паролям только и один позволять открытый ключ только.
Вы активируете предустановленное правило, и я предполагаю, что в предустановленном правиле есть Профиль = любой
.
Сначала попробуйте следующее:
netsh advfirewall firewall set rule group="File and Printer Sharing" new profile=private
netsh advfirewall firewall set rule name="File and Printer Sharing (SMB-In)" dir=in profile=public|private|domain new enable=Yes|No
Чтобы установить три профиля одновременно, используйте :
netsh advfirewall firewall set rule name="File and Printer Sharing (SMB-In)" dir=in new enable=Yes
Имя правила должно быть изменено на вашем местном языке, например :
netsh advfirewall firewall set rule name="檔案及印表機共用 (SMB-In)" dir=in profile=private new enable=Yes
Не забудьте запустить от имени администратора .
Обращаясь к теме, встречаются редкие случаи, когда использование названий на местном языке не работает, т.е. Польский Udostępnianie plików i drukarek (SMB - ruch przychodzący)
= Общий доступ к файлам и принтерам (SMB-In)
. Я считаю, что это как-то связано с обработкой UTF-8 в netsh, поскольку есть сообщения о том, что использование netsh для подключения к сетям Wi-Fi с именем UTF иногда тоже не работает.
В этих случаях используйте PowerShell Set-NetFirewallRule
и независимый от языка параметр "Name" (в данном случае FPS-SMB-In-TCP
). Используйте команду Get-NetFirewallRule
, чтобы получить все правильные имена для ваших правил.
Введите это в командной строке PowerShell с повышенными привилегиями:
Set-NetFirewallRule -DisplayGroup "File And Printer Sharing" -Enabled True -Profile Private
У меня это сработало в Windows 10 1703
Основываясь на ответе Малдера , чтобы включить его для частного режима, его необходимо установить специально для каждого правила в «Брандмауэр Защитника Windows в режиме повышенной безопасности».
& "C:\WINDOWS\system32\mmc.exe" "C:\WINDOWS\system32\wf.msc"
Выполните следующее в административном окне Powershell.
# Allow access to administrative shares through firewall [Ref: https://serverfault.com/a/968310/336668]
$ruleDisplayNames = "File and Printer Sharing (Echo Request - ICMPv4-In)", `
"File and Printer Sharing (Echo Request - ICMPv6-In)", `
"File and Printer Sharing (LLMNR-UDP-In)", `
"File and Printer Sharing (NB-Datagram-In)", `
"File and Printer Sharing (NB-Name-In)", `
"File and Printer Sharing (SMB-In)", `
"File and Printer Sharing (Spooler Service - RPC)", `
"File and Printer Sharing (Spooler Service - RPC-EPMAP)", `
"File and Printer Sharing (NB-Session-In)"
$rules = Get-NetFirewallRule | Where {$ruleDisplayNames -contains $_.DisplayName -and $_.Profile -ne "Domain"}
# The default rules have the non-Domain rule apply for both Public and
# Private. This updates the rule to be Private only
$rules | Set-NetFirewallRule -Profile Private
# Enable the rule -- i.e. grant the eexception (allow through firewall)
$rules | Enable-NetFirewallRule
Поздно на вечеринку, но вот как вы можете включать и отключать правила брандмауэра для общего доступа к файлам и принтерам в частных сетях с помощью Powershell.
Get-NetFirewallRule -DisplayGroup "File and Printer Sharing" -Direction In | where Profile -CLike "*Private*" | Enable-NetFirewallRule
Get-NetFirewallRule -DisplayGroup "File and Printer Sharing" -Direction In | where Profile -CLike "*Private*" | Disable-NetFirewallRule
Команды требуют прав администратора.
Эти команды получают правила брандмауэра для входящего трафика в группе отображения «Общий доступ к файлам и принтерам» (как уже отмечалось, это может быть локализовано для вашего языка), фильтры по тем, которые соответствуют частному профилю (вы можете изменить это на общедоступный или доменный, если вместо этого вы хотите изменить эти правила), и включает или отключает их.