我有 Windows、Mac 和 Linux 计算机;但目前我只能通过 Windows 和 Mac 计算机连接到我公司的部分网站,因为只有它们拥有 RSA SecurID 软件令牌。我很好奇:是否可以设置 SecurID 软件令牌以在 Linux 系统(在我的情况下是 Ubuntu)上运行?
答案1
答案2
答案3
就我个人而言,我太懒了,不愿意拿起手机,打开 RSA 应用程序,输入我的 PIN,然后将其输入到登录页面。我也不喜欢处理 Wine。因此,我为这个问题创建了一个完全疯狂的解决方案。我编写了一个脚本,它将通过 SSH 进入 Windows 计算机,启动 RSA 应用程序,输入您的 PIN,复制结果,并将其放入本地 Linux 计算机的剪贴板中。要做到这一点,您需要一台可以通过 SSH 访问的 Windows 计算机,并且安装了 RSA 软件。我使用了自由软件作为 Windows 中的 SSH 服务器。您还需要自动热键和执行程序。
在 Windows 机器上编译以下 AHK 脚本(我将生成的 exe 放在 C:\Program Files\RSA SecurID Software 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端使用以下shell脚本:
#!/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 计算机通信完毕后,它会将密码放入剪贴板并弹出一个小通知。基本上,你只需按下按钮,等待几秒钟,然后就可以粘贴密码了。
希望有所帮助。
答案4
我让自己成为一个脚本从命令行生成密码,这样我就不必处理 Windows 应用程序了。它基本上在后台运行 wine,抓取输出并将其打印到控制台。