শ্যাডো সেশন মোড RDS অ্যাডমিনিস্ট্রেটরদের ব্যবহারকারীর ডেস্কটপ দেখতে এবং ইন্টারঅ্যাক্ট করতে দেয়। Remote Desktop Shadowing মোড Windows Server 2012 R2 এবং Windows 8.1 থেকে শুরু করে Windows এর সমস্ত আধুনিক সংস্করণে কাজ করে (Windows Server 2012 বাদে, কার্নেল থেকে ব্যবহারকারী মোডে RDP স্ট্যাক স্থানান্তরের কারণে)। এই প্রবন্ধে, আমরা Windows Server 2016 এবং Windows 10-এ সক্রিয় RDP ব্যবহারকারী সেশন সংযোগ ও পরিচালনা করতে RDS Shadowing কনফিগার এবং ব্যবহার করার পদ্ধতি দেখব।
বিষয়বস্তু:
- উইন্ডোজ আরডিপি ক্লায়েন্টে (mstsc.exe) ছায়া সংযোগের বিকল্পগুলি
- Windows GUI থেকে রিমোট ডেস্কটপ শ্যাডো ব্যবহার করা
- GPO ব্যবহার করে Windows এ RDS শ্যাডো নিয়মগুলি কনফিগার করা
- পাওয়ারশেলের সাথে RDP সেশন শ্যাডো করা হচ্ছে
- অ-প্রশাসক ব্যবহারকারীদের শ্যাডো আরডিএস সেশনে কীভাবে অনুমতি দেবেন?
Windows RDP ক্লায়েন্টে (mstsc.exe) ছায়া সংযোগের বিকল্পগুলি
Windows Server 2016/Windows 10-এ বিল্ট-ইন RDP ক্লায়েন্ট (mstsc.exe
) এর বেশ কয়েকটি বিশেষ বিকল্প রয়েছে যা যেকোন ব্যবহারকারীর সক্রিয় RDP সেশনের সাথে দূরবর্তীভাবে ছায়া সংযোগ করতে ব্যবহার করা যেতে পারে:
Mstsc.exe [/shadow:sessionID [/v:Servername] [/control] [/noConsentPrompt] [/prompt]]
- /shadow:ID - নির্দিষ্ট আইডি দিয়ে ব্যবহারকারীর RDP সেশনের সাথে সংযোগ করুন;
- /v:servername - আপনি দূরবর্তী RDP/RDS হোস্টের হোস্টনাম বা IP ঠিকানা নির্দিষ্ট করতে পারেন। সেট না থাকলে, বর্তমান হোস্টে স্থানীয় ব্যবহারকারীর সেশনে সংযোগ করা হয়;
- /নিয়ন্ত্রণ - ব্যবহারকারীর সেশন (ডেস্কটপ) এর সাথে ইন্টারঅ্যাক্ট করার অনুমতি দেয়। অ্যাডমিনিস্ট্রেটর ব্যবহারকারীর মাউস নিয়ন্ত্রণ করতে পারে, কীবোর্ড থেকে তথ্য ইনপুট করতে পারে। যদি এই প্যারামিটার সেট করা না থাকে, ব্যবহারকারীর সেশন ভিউ মোড ব্যবহার করা হয়;
- /noConsentPrompt – বিকল্পটি অ্যাডমিনিস্ট্রেটরকে সংযোগ নিশ্চিত করতে ব্যবহারকারীকে জিজ্ঞাসা না করেই যেকোন সেশনে সংযোগ জোরপূর্বক করার অনুমতি দেয়;
- /প্রম্পট – অন্যান্য শংসাপত্রের সাথে সংযোগ করার অনুমতি দেয়। ব্যবহারকারীর নাম এবং পাসওয়ার্ড দূরবর্তী কম্পিউটারের সাথে সংযোগ করার জন্য অনুরোধ করা হচ্ছে৷ ৷
একটি সক্রিয় ডিরেক্টরি ডোমেন এবং একটি ওয়ার্কগ্রুপ উভয়ের কম্পিউটার এবং সার্ভারে ব্যবহারকারীর সেশনের সাথে সংযোগ করতে ছায়া সেশন ব্যবহার করা যেতে পারে। উপরন্তু, ব্যবহারকারীর RDP অধিবেশন চলছে এতে RDS হোস্টে প্রশাসকের বিশেষাধিকার থাকা আবশ্যক নয়। অ্যাডমিনিস্ট্রেটররা যেকোনো ব্যবহারকারীর অ্যাকাউন্টে RDS শ্যাডোয়িং অনুমতি অর্পণ করতে পারেন, এমনকি নন-প্রশাসকদের জন্য (নীচে এই বিষয়ে আরও)।
Windows GUI থেকে রিমোট ডেস্কটপ শ্যাডো ব্যবহার করা
আপনি mstsc.exe
ব্যবহার করে একটি ব্যবহারকারীর সেশনে সংযোগ করতে পারেন অথবা সরাসরি সার্ভার ম্যানেজার গ্রাফিক্যাল কনসোল থেকে। এটি করতে, RDS সার্ভারে সার্ভার ম্যানেজার কনসোল খুলুন, দূরবর্তী ডেস্কটপ পরিষেবা বিভাগে যান -> আপনার সংগ্রহ নির্বাচন করুন, উদাহরণস্বরূপ QuickSessionCollection
.
ডানদিকের তালিকায় এই RDS সার্ভারে সেশন আছে এমন ব্যবহারকারীদের একটি তালিকা থাকবে। আপনি যে ব্যবহারকারীর সেশন চান তাতে ডান-ক্লিক করুন, ছায়া নির্বাচন করুন ড্রপ-ডাউন মেনু থেকে।
আপনি শুধুমাত্র একটি সক্রিয় ব্যবহারকারী অধিবেশন সংযোগ করতে পারেন. যদি সেশনটি সংযোগ বিচ্ছিন্ন অবস্থায় থাকে (আরডিএস সেশনের সীমা/টাইমআউট সেটিংসের কারণে), আপনি এই ধরনের সেশনের সাথে সংযোগ করতে পারবেন না:
Shadow Error - The specified session is not connected.
ছায়া সংযোগ পরামিতি সহ একটি উইন্ডো প্রদর্শিত হবে। আপনি হয় দেখতে পারেন৷ অথবা নিয়ন্ত্রণ একজন ব্যবহারকারীর RDP সেশন। এছাড়াও আপনি ব্যবহারকারীর সম্মতির জন্য প্রম্পট চেক করতে পারেন বিকল্প
এই বিকল্পটি চেক করা থাকলে, ব্যবহারকারীর RDP সেশনে নিম্নলিখিত অনুরোধটি উপস্থিত হবে:
Remote Monitoring Request woshub\administrator is requesting to view your session remotely. Do you accept the request?
ব্যবহারকারী সংযোগ নিশ্চিত করলে, প্রশাসক তার ডেস্কটপ দেখুন-এ দেখতে পাবেন মোড, কিন্তু এটির সাথে ইন্টারঅ্যাক্ট করতে সক্ষম হবে না৷
৷টিপ৷৷ একটি ব্যবহারকারীর সেশন থেকে সংযোগ বিচ্ছিন্ন করতে এবং ছায়া মোড থেকে প্রস্থান করতে,
ALT+*
ওয়ার্কস্টেশনে বা Ctrl+*
RDS সার্ভারে (যদি কোন বিকল্প সমন্বয় সেট না করা হয়)। যদি একজন ব্যবহারকারী প্রশাসনিক শ্যাডো RDS সংযোগ প্রত্যাখ্যান করেন, তাহলে নিম্নলিখিত বার্তাটি উপস্থিত হবে:
Shadow Error: The operator or administrator has refused the request.৷
আপনি Windows সার্ভারের নতুন সংস্করণে RDP সেশনে ছায়া সংযোগের জন্য Windows Server 2008 R2 থেকে tsadmin.msc গ্রাফিকাল স্ন্যাপ-ইন ব্যবহার করতে পারবেন না।
আপনি যদি নিশ্চিতকরণের জন্য অনুরোধ না করে কোনো ব্যবহারকারীর সেশনে সংযোগ করার চেষ্টা করেন, তাহলে আপনি একটি পাবেন ত্রুটি বার্তা:
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 থেকে নিম্নলিখিত ফিল্টার করা ইভেন্টগুলি ব্যবহার করুন লগ:
- ইভেন্ট আইডি 20508 :ছায়া দেখার অনুমতি দেওয়া হয়েছে;
- ইভেন্ট আইডি 20503 :শ্যাডো ভিউ সেশন শুরু হয়েছে;
- ইভেন্ট আইডি 20504 :শ্যাডো ভিউ সেশন বন্ধ।
GPO ব্যবহার করে Windows এ RDS শ্যাডো নিয়মগুলি কনফিগার করা
RDS ব্যবহারকারী সেশনে দূরবর্তী সংযোগের সেটিংস গ্রুপ নীতি প্যারামিটার ব্যবহার করে কনফিগার করা হয় রিমোট ডেস্কটপ পরিষেবা ব্যবহারকারী সেশনের রিমোট কন্ট্রোলের জন্য নিয়ম সেট করুন , যা GPO এর ব্যবহারকারী এবং কম্পিউটার বিভাগের অধীনে অবস্থিত: নীতি -> প্রশাসনিক টেমপ্লেট -> উইন্ডোজ উপাদান -> দূরবর্তী ডেস্কটপ পরিষেবা -> দূরবর্তী সেশন হোস্ট -> সংযোগগুলি৷ এই নীতিটি DWORD শ্যাডো-এর সাথে মিলে যায় রেজিস্ট্রি কী HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services
-এর অধীনে প্যারামিটার (নীতি সেটিংসের সাথে সম্পর্কিত এই প্যারামিটারের মানগুলি বন্ধনীতে নির্দিষ্ট করা আছে)।
এই নীতিটি নিম্নলিখিত RD শ্যাডো সংযোগ বিকল্পগুলি কনফিগার করতে ব্যবহার করা যেতে পারে:
- কোন রিমোট কন্ট্রোল অনুমোদিত নয়৷ (রেজিস্ট্রি প্যারামিটারের মানের সাথে মিলে যায়
Shadow = 0
); - ব্যবহারকারীর অনুমতি নিয়ে সম্পূর্ণ নিয়ন্ত্রণ (
1
); - ব্যবহারকারীর অনুমতি ছাড়াই সম্পূর্ণ নিয়ন্ত্রণ (
2
); - ব্যবহারকারীর অনুমতি নিয়ে সেশন দেখুন (
3
); - ব্যবহারকারীর অনুমতি ছাড়াই সেশন দেখুন (
4
)।
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v Shadow /t REG_DWORD /d 4
সেশন শ্যাডো আচরণ পরিবর্তন করার পরে, RDP/RDS হোস্টে গ্রুপ নীতি সেটিংস আপডেট করুন।
আপনি gpmc.msc
থেকে AD ডোমেনে দূরবর্তী ছায়া সংযোগের জন্য নিয়মগুলি কনফিগার করতে পারেন উপরে বর্ণিত পলিসি প্যারামিটার ব্যবহার করে কনসোল, অথবা গ্রুপ পলিসি প্রেফারেন্স ব্যবহার করে, যা সরাসরি রেজিস্ট্রি প্যারামিটার পরিবর্তন করে (পরবর্তী বিকল্পটি আপনাকে গ্রুপ পলিসি আইটেম লেভেল টার্গেটিং ব্যবহার করে নির্দিষ্ট কম্পিউটারে নীতিটিকে আরও সঠিকভাবে লক্ষ্য করার অনুমতি দেয়)।
PowerShell এর সাথে RDP সেশন শ্যাডো করা হচ্ছে
আপনি PowerShell থেকে ব্যবহারকারীর সেশনে সংযোগ করতে রিমোট ডেস্কটপ পরিষেবার ছায়া বৈশিষ্ট্যগুলিও ব্যবহার করতে পারেন। প্রথমত, আপনাকে আরডিএস হোস্টে সেশনগুলির একটি তালিকা পেতে হবে (ব্যবহারকারীর সেশনগুলি তাদের অবস্থা অনুসারে গোষ্ঠীবদ্ধ করা হবে):Get-RDUserSession | ft Username, UnifiedSessionId, SessionState, HostServer, ApplicationType -GroupBy Sessionstate
এই সার্ভারে তিনটি সক্রিয় RDP ব্যবহারকারী সেশন রয়েছে। চলুন সেশন আইডি 3 সহ ব্যবহারকারীর সেশনের সাথে সংযোগ করি:Mstsc /shadow:3 /control
এছাড়াও, সার্ভারে (অথবা Windows 10 ডেস্কটপে যেখানে একাধিক RDP সংযোগ অনুমোদিত) সমস্ত RDP সেশনের একটি তালিকা পেতে, আপনি কমান্ডটি ব্যবহার করতে পারেন:
quser
অথবা
qwinsta
স্ক্রীনটি RDP ব্যবহারকারীর সেশন, তাদের আইডি এবং অবস্থার একটি তালিকা প্রদর্শন করবে:Active
অথবা Disconnected
.
দূরবর্তী সার্ভারে সেশনের তালিকা দেখাতে, নিম্নলিখিত কমান্ডটি চালান:
query session /server:servername
একটি দূরবর্তী সার্ভারে একটি ব্যবহারকারী সেশনের সাথে সংযোগ করতে, কমান্ডটি ব্যবহার করুন:
mstsc /v:rdsh2:3389 /shadow:3 /control
আরডিপি ব্যবহারকারী সেশনে আরও সুবিধাজনক ছায়া সংযোগের জন্য, আপনি নিম্নলিখিত ব্যাচ স্ক্রিপ্ট ব্যবহার করতে পারেন। এটি আপনাকে রিমোট আরডিএস সার্ভারের নাম লিখতে অনুরোধ করে, সমস্ত সেশনের একটি তালিকা প্রদর্শন করে এবং আপনি যে সেশন (আইডি) এর সাথে সংযোগ করতে চান তা নির্দিষ্ট করতে অনুরোধ করে:
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
আপনি এই ব্যাট ফাইলটিকে %Windir%\System32
-এ সংরক্ষণ করতে পারেন ডিরেক্টরি ফলস্বরূপ, আপনাকে শুধু ছায়া চালাতে হবে ছায়া সংযোগ শুরু করার জন্য কমান্ড।
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 সহ নিম্নলিখিত PowerShell স্ক্রিপ্টটিও ব্যবহার করতে পারেন ) ছায়া সংযোগের জন্য:
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 সেশনের তালিকা সহ একটি সাধারণ গ্রাফিকাল ফর্ম প্রদর্শন করে। আপনাকে শুধু একটি ব্যবহারকারীর অ্যাকাউন্ট নির্বাচন করতে হবে এবং সংযোগ করুন ক্লিক করুন৷ বোতাম।
কম্পিউটারে PowerShell স্ক্রিপ্ট (*.ps1) চালানোর জন্য, আপনাকে PowerShell এক্সিকিউশন নীতি কনফিগার করতে হবে।আপনি রিমোট ডেস্কটপ পরিষেবাগুলির ভূমিকার সাথে শুধুমাত্র Windows সার্ভারে নয়, বরং Windows 10 চলমান ব্যবহারকারীদের ডেস্কটপের সাথে সংযোগ করতে (Windows 10-এ রিমোট ডেস্কটপ সেশন শ্যাডোয়িং মোড ব্যবহার করে) ছায়া ব্যবহারকারী সংযোগ ব্যবহার করতে পারেন।
অ-প্রশাসক ব্যবহারকারীদের শ্যাডো আরডিএস সেশনে কীভাবে অনুমতি দেবেন?
উপরের উদাহরণগুলিতে, RDS ব্যবহারকারী সেশনে ছায়া সংযোগ ব্যবহার করার জন্য RDS সার্ভারে স্থানীয় প্রশাসকের বিশেষাধিকার প্রয়োজন। যাইহোক, আপনি কম্পিউটার/সার্ভারে স্থানীয় প্রশাসক অনুমতি না দিয়েই একজন অ-প্রশাসক ব্যবহারকারীকে RDP সেশনের ছায়া দেওয়ার অনুমতি দিতে পারেন।
উদাহরণস্বরূপ, আপনি AllowRDSSshadow গ্রুপের সদস্যদের RDP ব্যবহারকারী সেশনে একটি ছায়া সংযোগ ব্যবহার করার অনুমতি দিতে চান। এলিভেটেড কমান্ড প্রম্পট (cmd.exe) খুলুন এবং কমান্ডটি চালান:
wmic /namespace:\\root\CIMV2\TerminalServices PATH Win32_TSPermissionsSetting WHERE (TerminalName=”RDP-Tcp”) CALL AddAccount “woshub\AllowRDSShadow”,2