智能卡身份验证 SSH 远程客户端

信息安全 验证 SSH 智能卡
2021-09-06 13:24:47

我想对我的 SSH 会话使用智能卡身份验证。现在有时我想在 ssh 会话中使用 ssh 客户端。所以这种情况:

我的带有智能卡的台式计算机与 shell.provider.com 有一个 ssh 会话。从 shell.provider.com 我有一个到 shell.provider2.com 的 ssh 会话(我有时称这种情况为“跳过”)

我的智能卡已插入台式计算机。是否可以(以任何方式)使用智能卡身份验证登录 shell.provider2.com?

2个回答

您可以使用ssh-agent添加智能卡,然后将代理转发到另一台主机。这将允许您使用本地智能卡在第二台主机上进行身份验证。简而言之:

eval `ssh-agent`               # if the agent is not running yet
ssh-add -s /path/to/pkcs11.so  # probably /usr/lib64/opensc-pkcs11.so
                   # or Ubuntu: /usr/lib/x86_64-linux-gnu/pkcs11/opensc-pkcs11.so
# enter your pin
ssh-add -l                     # should list your smartcard
ssh -A shell.provider.com      # should not prompt for pin
ssh shell.provider2.com        # from the shell.provider.com

智能卡的解决方案可以是

  • 使用代理转发或
  • (有和没有 sc)使用 ssh 的代理命令。

您可以通过使用主机 B 的配置来为此使用专用配置~/.ssh/config,或者将其用作 ssh 调用中的参数。

Host B
  Hostname <the-real-hostname-for-B>
  User <user>
  Port 22
  ProxyCommand ssh -p 22 -q -W %h:%p <the-real-hostname-for-A>

一个优点是您将拥有主机的别名并且还具有代码完成功能(更少的输入)

ssh <user>@B

注意:代理转发在共享机器上是一种不好的做法,因为通过环境变量 SSH_AUTH_SOCK 劫持您的代理非常容易,因此攻击者可以接管您的身份和身份验证机制以跳转到其他主机。
当使用 yubikeys 作为您的智能卡时,您可以使用在需要登录等加密操作时需要物理触摸智能卡的功能。这样,攻击者还需要物理访问您的智能卡,从而在大多数情况下阻止攻击。