Как настроить несколько сессий rdp с одним логином в Windows Server

RDP несколько сессийВсем привет сегодня хочу рассказать о небольшой фишке как можно настроить несколько сессий rdp с одним логином в Windows Server. Если честно я не понимаю, для чего это может быть нужно, так как с точки зрения безопасности это не совсем правильно, но если уж есть давайте расскажу. Данная возможно оказывается еще была аж с Windows Server 2003, давненько это было, но там все делалось простановкой одной галки, в Windows Server 2012R2 и выше на пару действий побольше.

Для чего может потребоваться несколько RDP сессий с одним логином

Думаю не нужно объяснять, что очень часто на серверной платформе Windows Server делают сервер терминалов, для совместной работы многих пользователей за ним, и люди подключаются к нему за счет протокола RDP по порту 3389. Не во всех компаниях есть  Active Directory, где подразумевается использование уникальных логинов, в таких окружениях легко на сервере может быть общая учетная запись, под которой работает несколько операторов.

Когда они попытаются использовать один и тот же логин одновременно, тот кто зайдет последний, выкинет предыдущего. В результате у него завершится RDP сессия и выскочит окно:

Подключение было прервано, так как другой пользователь подключился к удаленному компьютеру. Код ошибки: 0x3. Расширенный код ошибки: 0x5.

Подключение было прервано
Может быть, разновидность:

Your Remote Desktop Services session has ended.
Another user connected to the remote computer, so you connection was lost. Try connecting again, or contact your network administrator or technical support group.

Your Remote Desktop Services session has ended

Из практики могу выделить ситуацию, когда нескольких администраторам нужно было решить вопрос по серверу. Они оба параллельно работали из под одной учетной записи Administrator.

Но по ряду причин вы можете активировать встроенную возможность WIndows, что система позволяла использовать один и тот же логин в разных RDP сессия, НО хочу отметить, что это не безопасно, так как не будет прозрачного аудита действий, в результате которого можно будет разобраться, кто и что делал.

Как убрать ограничение одного сеанса пользователя по RDP с помощью ключа реестра

Если вы хотите расширить лимиты сеансов на не доменных или одиночных серверах, то можно всегда воспользоваться ключом реестра. Запустите regedit.

regedit

Перейдите в раздел:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server

Найдите там ключ fSingleSessionPerUser. У него по умолчанию установлено значение "1", смените его на '0' и сохраните изменения.

Если его вдруг по какой-то причине не будет, то нужно его создать. Тип REG_DWORD, имя fSingleSessionPerUser, значение 0

fSingleSessionPerUser

Изменения вступают в силу сразу, без перезагрузки.

Настройка нескольких сессий rdp с одним логином через PowerShell

Все то же самое можно сделать и через PowerShell. Для этого выполните в ISE вот такой код:

#Указываем переменные
$path = "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server"
$name = "fSingleSessionPerUser"
$value = 0

# Изменяем/Добавляем ключ реестра fSingleSessionPerUser 
Set-ItemProperty -Path $path -Name $name -Value $value -Type DWord

Добавление fSingleSessionPerUser через PowerShell

Если вы хотите сделать это на большом количестве серверов, то нужно слегка подредактировать код.

# Прописывается путь к вашему файлу содержащем список серверов
$serversFile = "C:\Temp\servers.txt"

# Считываем текстовый файл со списком серверов
$servers = Get-Content -Path $serversFile

# Задаем путь к реестру, где будет создаваться ключ fSingleSessionPerUser
$path = "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server"
$name = "fSingleSessionPerUser"
$value = 0

# Проходимся по каждому серверу
foreach ($server in $servers) {
try {
# Выполняем на сервере удаленно код по созданию ключа реестра
Invoke-Command -ComputerName $server -ScriptBlock {
param ($path, $name, $value)

Set-ItemProperty -Path $path -Name $name -Value $value -Type DWord
} -ArgumentList $path, $name, $value

Write-Host "Успешно обновлени ключ fSingleSessionPerUser: $server"
} catch {
Write-Host "Не удалось обновить ключ реестра fSingleSessionPerUser: $server. Ошибка: $_"
}
}

Управление ключом fSingleSessionPerUser через командную строку

Запустите cmd в режиме администратора и введите вот такую команду:

REG ADD "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fSingleSessionPerUser /t REG_DWORD /d 0 /f

В результате это так же внесет изменение в реестре Windows.

Управление ключом fSingleSessionPerUser в cmd

Убираем ограничение одного сеанса пользователя по RDP с помощью локальных политик

Windows Server 2012R2 и выше за настройку несколько сессий rdp с одним логином отвечает локальная политика. Нажимаем Win+R и вводим gpedit.msc

несколько сессий rdp с одним логином в Windows Server 2012R2

Вам нужно отключить политику

Конфигурация компьютера\Административные шаблоны\Компоненты Windows\Службы удаленных рабочих столов\Узел сеансов удаленных рабочих столов\Подключения -> Ограничить пользователей служб удаленных рабочих столов одним сеансом служб удаленных рабочих столов

Для англоязычной версии

Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Connections -> Restrict Remote Desktop Services users to a single remote session

Как настроить несколько сессий rdp с одним логином в Windows Server 2012R2-01

ну и собственно мы видим политику "Ограничить пользователей служб удаленных рабочих столов одним сеансом служб удаленных рабочих столов", поставив в ней статус отключено вы позволите несколько сессий rdp с одним логином на вашем терминальном сервере.

Кстати пока писал, придумал, где это можно использовать, бывают случаи когда на сервере зависает сессия и при повторном подключении вы видите черный экран, так вот зайдя по второй сессии можно выкинуть первую

Как настроить несколько сессий rdp с одним логином в Windows Server 2012R2-02

Управление ограничением пользовательских RDP сессий через групповую политику

Если у вас есть домен Active Directory, то приучите себя уходить от локальных решений и использовать всегда групповую политику. Выбираем нужное организационное подразделение и создаем на его уровне новую групповую политику с нужным именем. Далее переходим к ее редактированию, нас будет интересовать раздел:

Computer Configuration\Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Connections -> Restrict Remote Desktop Services users to a single remote session

Конфигурация компьютера\Административные шаблоны\Компоненты Windows\Службы удаленных рабочих столов\Узел сеансов удаленных рабочих столов\Подключения -> Ограничить пользователей служб удаленных рабочих столов одним сеансом служб удаленных рабочих столов

Надеюсь, что у вас все получилось. С вами был Иван Сёмин, автор и создатель IT портала Pyatilistnik.

Оцените статью
Настройка серверов windows и linux
Добавить комментарий

  1. Zirex

    Спасибо

  2. Иван Семин автор

    Рад, что вам помогло.

  3. Михаил

    Это будет подключение к одной сессии или для каждого будет организована своя сессия? И можно ли организовать подключение к одной сессии нескольких пользователей?

  4. Дмитрий

    А как можно создать два ярлыка для подключения к одному серверу, с одним логином/паролем но для разных программ, например для 1С 7.7 и 1С 8?

  5. Иван Семин автор

    Так а в чем проблема открыть mstsc и сохранить ее с нужными настройками, под разными именами?

  6. Андрей

    Добрый день, а если требуется чтоб не все пользователи могли щапускать 2 сеанса?
    к примеру коммерсанты могли запускать только один сеанс, а бухгалтер 2 сеанса.
    (В политиках домена, настройки пользователя, такой компонент отсуцтвует, он есть только в настройках ПК, чтоб распространяет его на всех пользователей данного ПК)