โดยส่วนตัวแล้วฉันขี้เกียจหยิบโทรศัพท์เปิดแอป RSA ป้อน PIN ของฉันแล้วพิมพ์ลงในหน้าเข้าสู่ระบบ ฉันไม่ชอบที่จะจัดการกับไวน์ ดังนั้นฉันจึงสร้างวิธีแก้ปัญหาที่บ้าคลั่งอย่างสมบูรณ์เพื่อแก้ไขปัญหานี้ ฉันเขียนสคริปต์ที่จะ SSH ลงในเครื่อง Windows เปิดแอป RSA ป้อน PIN ของคุณคัดลอกผลลัพธ์และใส่ไว้ในคลิปบอร์ดของเครื่อง Linux ในเครื่องของคุณ ในการทำเช่นนี้คุณต้องมีเครื่อง Windows ที่คุณสามารถเข้าถึงผ่าน SSH ด้วยซอฟต์แวร์ RSA ที่ติดตั้งไว้ ฉันใช้freesshdเป็นเซิร์ฟเวอร์ SSH ใน Windows คุณจะต้องมีAutoHotKeyและPsExecด้วย
คอมไพล์สคริปต์ AHK ต่อไปนี้บนเครื่อง Windows (ฉันใส่ exe ที่เป็นผลลัพธ์ที่ C: \ Program Files \ RSA ซอฟต์แวร์ Token \ rsa-securid.exe Token \ rsa-securid.exe):
TokenName = %1%
Pin = %2%
Run, "C:\Program Files\RSA SecurID Software Token\SecurID.exe"
WinWait, %TokenName% - RSA SecurID Token,
IfWinNotActive, %TokenName% - RSA SecurID Token, , WinActivate, %TokenName% - RSA SecurID Token,
WinWaitActive, %TokenName% - RSA SecurID Token,
Send, %Pin%
Sleep, 100
Send, {Enter}
Sleep, 100
Send, ^c
Passcode = %Clipboard%
Sleep, 100
Send, {AltDown}{F4}{AltUp}
ExitApp %Passcode%
จากนั้นใช้เชลล์สคริปต์ต่อไปนี้ที่ด้าน Linux:
#!/bin/bash
NAME=<the rsa token name>
PIN=<your pin>
HOST=<windows host>
USER=<windows user>
PASSWORD=<windows password>
SESSION=1
PASSCODE=$(ssh $HOST "cmd /c \"C:\Program Files (x86)\Sysinternals\PsExec.exe\" /accepteula \\\127.0.0.1 -u $USER -p $PASSWORD -i $SESSION C:\\PROGRA~1\\RSASEC~1\\rsa-securid.exe $NAME $PIN" | grep "error code" | sed "s/.*error code \([0-9]*\).*/\1/")
echo -n $PASSCODE | xclip -selection clipboard -in
notify-send --hint=int:transient:1 -i "rsa-securid.png" "Passcode: $PASSCODE"
เมื่อสคริปต์พูดกับเครื่อง Windows เสร็จแล้วสคริปต์จะใส่รหัสผ่านในคลิปบอร์ดของคุณและป๊อปอัปแจ้งเตือนเล็กน้อย โดยพื้นฐานแล้วคุณกดปุ่มรอสองสามวินาทีและ voila คุณสามารถวางรหัสผ่านได้
หวังว่าจะช่วย