我经常要登录多个远程系统进行维护,输入用户名和密码是一件很烦的事情,但如果将用户密码保存在远程控制软件中又会造成安全隐患,尤其是如果该远程控制软件是放在 U 盘上的便携版,一旦 U 盘遗失,可能会被别人轻易侵入系统,我的几个 Linux 帐号都有 sudo 权限,被窃取后基本上就等同 root 帐号被攻克了。
比较安全的自动登录可以用 KeePass 配合适当的远程控制软件来实现。
首先远程控制软件必须允许在命令行设定远程登录的信息,如远程系统IP/域名,端口,用户名,密码等等。我最常用的几款都可以:
登录 SSH 服务器使用 putty:putty.exe -ssh $username@$host:$port -pw $password
登录 SFTP 服务器使用 winscp:winscp.exe” sftp://$username:$password@$host:$port
远程桌面使用 UltraVNC viewer:vncviewer.exe” $host:$port -password $password
远程桌面使用 TeamViewer:Teamviewer.exe” -i $ID -P $password
如果想在 U 盘上使用 KeePass 便携版的话,这几款远程控制软件都有便携版或者便携的替代版,如 putty 可以用 kitty 来替代。
这里用 KeePass 1.14 中的 URL field 配合 cmd:// 链接来启上述动远程控制软件,传入登录信息,就可以无需输入用户名/密码自动登录到远程系统上了。由于远程系统的登录信息是由 KeePass 加密保存的,远程软件中可完全不需要保存远程系统的信息(可手动逐一删除目前已经保存的信息),并且设置不要记录登录历史,这样即使把 KeePass + 远程控制软件便携版保存在 Dropbox 这样的网盘上也可以放心了。
假定我们把远程软件便携版(kitty.exe, winscp.exe, vncviewer.exe, teamviewer.exe)保存在 KeePass 的目录下(和 KeePass.exe 在同一目录),则 URL field 和相应 field 可以这样设置:
kitty 自动登录 URL:
cmd://”{APPDIR}\kitty.exe” -ssh {USERNAME} -pw {PASSWORD}
(”User name” field: username@host:port, “Password” field: password)
winscp 自动登录 URL:
cmd://”{APPDIR}\winscp.exe” sftp://{USERNAME}:{PASSWORD}@{TITLE}
(”Title” field: host:port, “User name” field: username, “Password” field: password)
UltraVNC viewer 自动登录 URL:
cmd://”{APPDIR}\vncviewer.exe” {USERNAME} -password {PASSWORD}
(”User name” field: host:port, “Password” field: password)
TeamViewer 自动登录 URL:
cmd://”{APPDIR}\Teamviewer.exe” -i “{USERNAME}” -P {PASSWORD}
(”User name” field: ID, “Password” field: password)
这种自动登录目前的局限是:
1、SSH (putty, winscp) 还无法用密钥登录,KeePass 1.14 可考虑用 “Notes” field 保存 private key,然后写一个 batch,把 {NOTES} 保存成一个临时文件,用 -i 传给 putty 登录后马上删除;KeePass 2.0 则可以使用 custom field;
2、SSH (putty, winscp) 会记录远程系统的IP或域名及公钥(但这些信息只要用 putty/winscp 连接一次 SSH 服务器就能取得)
编辑:听说 KeePass 2.x 可以保存文件附件了,那么,使用密钥登录的问题也就解决了。
One Trackback/Pingback
Topo…
[...] something about topo[...]…
Post a Comment