কম্পিউটার টিউটোরিয়াল

RDS উইন্ডোজ সার্ভার ২০১৬/২০১৯-এ ব্যবহারকারীর RDP সেশন শ্যাডো (রিমোট কন্ট্রোল) করা

শ্যাডো সেশন মোড RDS অ্যাডমিনিস্ট্রেটরকে ব্যবহারকারীর ডেস্কটপ দেখতে এবং এর সাথে ইন্টারঅ্যাক্ট করতে দেয়। রিমোট ডেস্কটপ শ্যাডোইং মোড উইন্ডোজ সার্ভার ২০১২ R2 এবং উইন্ডোজ ৮.১ থেকে সকল আধুনিক উইন্ডোজ ভার্সনে কাজ করে (উইন্ডোজ সার্ভার ২০১২ ছাড়া, কারণ RDP স্ট্যাক 커নেল থেকে ইউজার মোডে ট্রান্সফার হওয়ায়)। এই আর্টিকেলে, আমরা দেখব কীভাবে উইন্ডোজ সার্ভার ২০১৬ এবং উইন্ডোজ ১০-এ RDS শ্যাডোইং কনফিগার এবং ব্যবহার করে সক্রিয় RDP ব্যবহারকারী সেশন সাথে সংযোগ এবং পরিচালনা করতে হয়।

উইন্ডোজ RDP ক্লায়েন্ট (mstsc.exe) এ শ্যাডো কানেকশন অপশন

উইন্ডোজ সার্ভার ২০১৬/উইন্ডোজ ১০-এ, বিল্ট-ইন RDP ক্লায়েন্ট (mstsc.exe)-এ বেশ কিছু স্পেশাল অপশন রয়েছে যা যেকোনো ব্যবহারকারীর সক্রিয় RDP সেশনে রিমোট শ্যাডো কানেক্ট করতে ব্যবহার করা যায়:

Mstsc.exe [/shadow:sessionID [/v:Servername] [/control] [/noConsentPrompt] [/prompt]]
  • /shadow:ID – নির্দিষ্ট ID-র ব্যবহারকারীর RDP সেশনে সংযোগ করুন;
  • /v:servername – রিমোট RDP/RDS হোস্টের হোস্টনেম বা IP ঠিকানা নির্দিষ্ট করতে পারেন। যদি সেট না করা থাকে, তবে বর্তমান হোস্টের লোকাল ব্যবহারকারী সেশনে সংযোগ হয়;
  • /control – ব্যবহারকারীর সেশনের সাথে ইন্টারঅ্যাক্ট করার অনুমতি দেয় (ডেস্কটপ)। অ্যাডমিনিস্ট্রেটর ব্যবহারকারীর মাউস নিয়ন্ত্রণ করতে পারে, কিবোর্ড থেকে ডেটা ইনপুট দিতে পারে। যদি এই প্যারামিটার সেট না করা থাকে, তবে শুধু ব্যবহারকারীর সেশন ভিউ মোড ব্যবহার হয়;
  • /noConsentPrompt – এই অপশন অ্যাডমিনিস্ট্রেটরকে ব্যবহারকারীর সন্মতি চেয়ে না যেকোনো সেশনে বাধ্য করে সংযোগ করতে দেয়;
  • /prompt – অন্য শংসাপত্র দিয়ে সংযোগ করার অনুমতি দেয়। রিমোট কম্পিউটারে সংযোগ করার জন্য ব্যবহারকারীর নাম এবং পাসওয়ার্ড চাওয়া হয়।

শ্যাডো সেশন অ্যাক্টিভ ডিরেক্টরি ডোমেন এবং ওয়ার্কগ্রুপ উভয়েই কম্পিউটার এবং সার্ভারের ব্যবহারকারী সেশনে সংযোগ করতে ব্যবহার করা যায়। এছাড়া, RDS হোস্টে অ্যাডমিনিস্ট্রেটর đặcাধিকার থাকা প্রয়োজন নয় যেখানে ব্যবহারকারীর RDP সেশন চলছে। অ্যাডমিনিস্ট্রেটররা RDS শ্যাডোইং পারমিশন যেকোনো ব্যবহারকারী অ্যাকাউন্টের জন্য ডেলিগেট করতে পারেন, এমনকি নন-অ্যাডমিনদের জন্যও (নিচে আরও বিস্তারিত)।

উইন্ডোজ GUI থেকে রিমোট ডেস্কটপ শ্যাডো ব্যবহার করা

আপনি mstsc.exe বা সরাসরি সার্ভার ম্যানেজার গ্রাফিক্যাল কনসোল থেকে ব্যবহারকারী সেশনে সংযোগ করতে পারেন। এর জন্য, RDS সার্ভারে সার্ভার ম্যানেজার কনসোল খুলুন, Remote Desktop Services সেকশনে যান -> আপনার কালেকশন সিলেক্ট করুন, উদাহরণস্বরূপ QuickSessionCollection।

ডান পাশের তালিকায় এই RDS সার্ভারে সেশন সম্পন্ন ব্যবহারকারীদের তালিকা থাকবে। যেসব ব্যবহারকারী সেশনে আপনি সংযোগ করতে চান সেটি রাইট-ক্লিক করুন, ড্রপ-ডাউন মেনু থেকে Shadow বেছে নিন।

আপনি শুধু সক্রিয় ব্যবহারকারী সেশনে সংযোগ করতে পারেন। যদি সেশনটি ডিসকানেক্টেড স্টেটে থাকে (RDS সেশন লিমিট/টাইমআউট সেটিংসের কারণে), তবে আপনি এমন সেশনে সংযোগ করতে পারবেন না:

Shadow Error - The specified session is not connected.

শ্যাডো কানেকশন প্যারামিটারসহ একটি উইন্ডো দেখা যাবে। আপনি ব্যবহারকারীর RDP সেশন View বা Control করতে পারেন। আপনি Prompt for user consent অপশনও চেক করতে পারেন।

যদি এই অপশনটি চেক করা থাকে, তবে ব্যবহারকারীর RDP সেশনে নিচের অনুরোধ দেখা যাবে:

Remote Monitoring Request woshub\administrator is requesting to view your session remotely. Do you accept the request?

যদি ব্যবহারকারী সংযোগটি অনুমোদন করে, তবে অ্যাডমিনিস্ট্রেটর তার ডেস্কটপ View মোডে দেখতে পাবে, কিন্তু এর সাথে ইন্টারঅ্যাক্ট করতে পারবে না।

টিপ। ব্যবহারকারী সেশন থেকে ডিসকানেক্ট হয়ে শ্যাডো মোড থেকে বের হওয়ার জন্য, ওয়ার্কস্টেশনে ALT+* বা RDS সার্ভারে Ctrl+* চাপুন (যদি অল্টারনেটিভ কোম্বিনেশন সেট করা না থাকে)।

যদি ব্যবহারকারী অ্যাডমিনিস্ট্রেটিভ শ্যাডো RDS সংযোগটি প্রত্যাখ্যান করে, তবে নিচের বার্তা দেখা যাবে:

Shadow Error: The operator or administrator has refused the request.

আপনি উইন্ডোজ সার্ভার ২০০৮ R2-এর tsadmin.msc গ্রাফিক্যাল স্ন্যাপ-ইন ব্যবহার করে nieuwer উইন্ডোজ সার্ভার ভার্সনে RDP সেশনে শ্যাডো কানেকশন করতে পারবেন না।
যদি আপনি ব্যবহারকারীর সন্মতি চেয়ে না তার সেশনে সংযোগ করার চেষ্টা করেন, তবে একটি ত্রুটি বার্তা পাবেন:

Shadow Error: The Group Policy setting is configured to require the user’s consent. Verify the configuration of the policy settings.

যদি আপনি RDS শ্যাডো কানেকশন ইভেন্ট ব্যবহারকারী সেশনের জন্য অডিট করতে চান, তবে Microsoft-Windows-TerminalServices-RemoteConnectionManager/Operational লগ থেকে নিচের ফিল্টারড ইভেন্ট ব্যবহার করুন:

  • Event ID 20508: Shadow View Permission Granted;
  • Event ID 20503: Shadow View Session Started;
  • Event ID 20504: Shadow View Session Stopped.

GPO ব্যবহার করে উইন্ডোজে RDS শ্যাডো নিয়ম কনফিগার করা

RDS ব্যবহারকারী সেশনগুলোর রিমোট কানেকশনের সেটিংস গ্রুপ পলিসি প্যারামিটার Set rules for remote control of Remote Desktop Services user sessions ব্যবহার করে কনফিগার করা হয়, যা GPO-এর User এবং Computer উভয় সেকশনে পাওয়া যায়: Policies -> Administrative Templates -> Windows components -> Remote Desktop Services -> Remote Session Host -> Connections। এই পলিসি রেজিস্ট্রি কী HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services অধীনে DWORD Shadow প্যারামিটারের সাথে সম্পর্কিত (এই প্যারামিটারের মানগুলো যা পলিসি সেটিংসের সাথে মিলে যায় সেগুলো ব্র্যাকেটে দেখানো হয়েছে)।

এই পলিসি ব্যবহার করে নিচের RD শ্যাডো কানেকশন অপশনগুলো কনফিগার করা যায়:

  • No remote control allowed (রেজিস্ট্রি প্যারামিটারের মান Shadow = 0);
  • Full Control with user’s permission (1);
  • Full Control without user’s permission (2);
  • View Session with user’s permission (3);
  • View Session without user’s permission (4).

রেজিস্ট্রি দিয়ে সরাসরি এই পলিসির প্যারামিটার সেট করতে নিচের কমান্ড ব্যবহার করুন:

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v Shadow /t REG_DWORD /d 4

সেশন শ্যাডো আচরণ পরিবর্তন করার পর, RDP/RDS হোস্টে গ্রুপ পলিসি সেটিংস আপডেট করুন।

আপনি AD ডোমেনে রিমোট শ্যাডো কানেকশনের নিয়মগুলো gpmc.msc কনসোল থেকে উপরে বর্ণিত পলিসি প্যারামিটার ব্যবহার করে কনফিগার করতে পারেন, অথবা গ্রুপ পলিসি প্রেফারেন্সেস ব্যবহার করে, যা সরাসরি রেজিস্ট্রি প্যারামিটার মডিফাই করে (দ্বিতীয় অপশনটি আপনাকে গ্রুপ পলিসি আইটেম লেভেল টার্গেটিং ব্যবহার করে নির্দিষ্ট কম্পিউটারগুলোর জন্য পলিসি টার্গেট করার অনুমতি দেয়)।

পাওয়ারশেল দিয়ে RDP সেশন শ্যাডো করা

আপনি রিমোট ডেস্কটপ সার্ভিসেস শ্যাডো ফিচার ব্যবহার করে পাওয়ারশেল থেকে ব্যবহারকারীর সেশনে সংযোগ করতে পারেন। প্রথমে, RDS হোস্টে সেশনের তালিকা পান (ব্যবহারকারী সেশনগুলো তাদের স্টেট অনুযায়ী গ্রুপ করা হবে):

Get-RDUserSession | ft Username, UnifiedSessionId, SessionState, HostServer, ApplicationType -GroupBy Sessionstate

এই সার্ভারে তিনটি সক্রিয় RDP ব্যবহারকারী সেশন রয়েছে। চলে সেশন ID ৩-র সাথে সংযোগ করি:
Mstsc /shadow:3 /control

এছাড়া, সার্ভারের (বা উইন্ডোজ ১০ ডেস্কটপে যেখানে একাধিক RDP সংযোগ অনুমোদিত) সকল RDP সেশনের তালিকা পেতে আপনি নিচের কমান্ড ব্যবহার করতে পারেন:

quser

অথবা

qwinsta

স্ক্রিনে RDP ব্যবহারকারী সেশনগুলো, তাদের ID এবং স্টেট: Active বা Disconnected দেখা যাবে।

রিমোট সার্ভারের সেশন তালিকা দেখতে নিচের কমান্ড চালান:

query session /server:servername

রিমোট সার্ভারের ব্যবহারকারী সেশনে সংযোগ করতে কমান্ড:

mstsc /v:rdsh2:3389 /shadow:3 /control

ডাইনামিক পোর্ট রেঞ্জ (RPC) 49152 থেকে 65535 রিমোট শ্যাডো কানেকশন সেশন স্থাপন করতে ব্যবহৃত হয় ডিফল্ট TCP/3389 RDP পোর্টের পরিবর্তে।

RDP ব্যবহারকারী সেশনে আরও সুবিধাজনক শ্যাডো কানেকশনের জন্য নিচের ব্যাচ স্ক্রিপ্ট ব্যবহার করতে পারেন। এটি রিমোট RDS সার্ভারের নাম লিখতে বলে, সকল সেশন তালিকা দেখায় এবং আপনি যেসব সেশনে (ID) সংযোগ করতে চান সেটি নির্দিষ্ট করতে বলে:

shadow.bat

@echo off
set /P rcomp="Enter name or IP of a Remote PC: "
query session /server:%rcomp%
set /P rid="Enter RDP user ID: "
start mstsc /shadow:%rid% /v:%rcomp% /control

এই bat ফাইলটি %Windir%\System32 ডিরেক্টরিতে সেভ করুন। ফলস্বরূপ, আপনাকে শুধু shadow কমান্ড চালাতে হবে শ্যাডো কানেকশন শুরু করার জন্য।

কনসোল সেশনে সংযোগ করতে আপনি এই স্ক্রিপ্ট ব্যবহার করতে পারেন:
shadow_console.bat

@echo off
set /P rcomp="Enter name or IP of a Remote PC: "
for /f "tokens=3 delims= " %%G in ('query session console /server:%rcomp%') do set rid=%%G
start mstsc /shadow:%rid% /v:%rcomp% /control

আপনি শ্যাডো কানেকশনের জন্য একটি সহজ GUI-সহ পাওয়ারশেল স্ক্রিপ্টও ব্যবহার করতে পারেন (shadow_user_rdp_session.ps1):

Add-Type -assembly System.Windows.Forms
$Header = "SESSIONNAME", "USERNAME", "ID", "STATUS"
$gForm = New-Object System.Windows.Forms.Form
$gForm.Text ='Shadow Session Connect'
$gForm.Width = 400
$gForm.AutoSize = $true
$dBttn = New-Object System.Windows.Forms.Button
$dBttn.Text = 'Control'
$dBttn.Location = New-Object System.Drawing.Point(15,10)
$gForm.Controls.Add($dBttn)
$dList = New-Object System.Windows.Forms.ListView
$dList.Location = New-Object System.Drawing.Point(0,50)
$dList.Width = $gForm.ClientRectangle.Width
$dList.Height = $gForm.ClientRectangle.Height
$dList.Anchor = "Top, Left, Right, Bottom"
$dList.MultiSelect = $False
$dList.View = 'Details'
$dList.FullRowSelect = 1;
$dList.GridLines = 1
$dList.Scrollable = 1
$gForm.Controls.add($dList)
foreach ($column in $Header){
$dList.Columns.Add($column) | Out-Null
}
$(qwinsta.exe | findstr "Active") -replace "^[\s>]" , "" -replace "\s+" , "," | ConvertFrom-Csv -Header $Header | ForEach-Object {
$dListItem = New-Object System.Windows.Forms.ListViewItem($_.SESSIONNAME)
$dListItem.Subitems.Add($_.USERNAME) | Out-Null
$dListItem.Subitems.Add($_.ID) | Out-Null
$dListItem.Subitems.Add($_.STATUS) | Out-Null
$dList.Items.Add($dListItem) | Out-Null
}
$dBttn.Add_Click(
{
$SelectedItem = $dList.SelectedItems[0]
if ($SelectedItem -eq $null){
[System.Windows.Forms.MessageBox]::Show("Select a user session to connect ")
}else{
$session_id = $SelectedItem.subitems[2].text
$(mstsc /shadow:$session_id /control)
#[System.Windows.Forms.MessageBox]::Show($session_id)
}
}
)
$gForm.ShowDialog()

এই স্ক্রিপ্ট একটি সিম্পল গ্রাফিক্যাল ফর্ম প্রদর্শন করে লোকাল হোস্টে সক্রিয় RDP সেশনগুলোর তালিকা সহ। আপনাকে শুধু ব্যবহারকারী অ্যাকাউন্ট সিলেক্ট করে Connect বাটনে ক্লিক করতে হবে।

কম্পিউটারে পাওয়ারশেল স্ক্রিপ্ট (*.ps1) চালাতে, আপনাকে পাওয়ারশেল এক্সিকিউশন পলিসি কনফিগার করতে হবে।

আপনি শ্যাডো ইউজার কানেকশন শুধু RDS রোল সহ উইন্ডোজ সার্ভারে নয়, বরং উইন্ডোজ ১০ চলে যেসব ডেস্কটপ (Using Remote Desktop Session Shadowing Mode in Windows 10) তাদের সাথে সংযোগ করার জন্যও ব্যবহার করতে পারেন।

নন-অ্যাডমিন ব্যবহারকারীদের RDS সেশন শ্যাডো করার অনুমতি দেওয়া

উপরের উদাহরণগুলোতে, RDS ব্যবহারকারী সেশনে শ্যাডো কানেকশন ব্যবহার করতে RDS সার্ভারে লোকাল অ্যাডমিনিস্ট্রেটর đặcাধিকার প্রয়োজন। যieniu, আপনি একটি নন-অ্যাডমিন ব্যবহারকারীকে লোকাল অ্যাডমিন পারমিশন দিয়ে না RDP সেশন শ্যাডো করার অনুমতি দিতে পারেন।

উদাহরণস্বরূপ, আপনি AllowRDSShadow গ্রুপের সদস্যদের RDP ব্যবহারকারী সেশনগুলোর সাথে শ্যাডো কানেকশন ব্যবহার করার অনুমতি দিতে চান। এলিভেটেড কমান্ড প্রম্পট (cmd.exe) খুলুন এবং কমান্ডটি চালান:

wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName=”RDP-Tcp”) CALL AddAccount “woshub\AllowRDSShadow”,2
  1. স্ট্যান্ডার্ড ইউজারকে উইন্ডোজ ৭ এবং ১০-এ RDP/রিমোট এক্সেস দেয়ার পদ্ধতি

  2. উইন্ডোজ সার্ভার ২০১৬ ইনস্টলেশন: সম्पূর্ণ ধাপে ধাপ টিউটোরিয়াল

  3. স্টেপ-বাই-স্টেপ গাইড: উইন্ডোজ ২০১৬/২০১৯ লাইসেন্স সার্ভারে RDS CALs ইনস্টল করুন

  4. উইন্ডোজ ১১-এ ইউজার অ্যাকাউন্ট কন্ট্রোল (UAC) নিষ্ক্রিয় করার পদ্ধতি: ধাপে ধাপে গাইড