anx*_*anx 5 ssh gpg ssh-keys ssh-agent
公司政策要求安全存储一些 ssh 密钥,例如存储在专用 USB 设备上。使用 gnupg 和 来使用未存储在主机上的密钥可以完美地工作enable-ssh-support,即使使用多个密钥时也是如此:
Host example.com
HostName ssh.example.com
IdentityFile ~/.ssh/smartcard.pub
Host example.net
HostName git.example.net
IdentityFile ~/.ssh/another-smartcard.pub
Host example.org
HostName sftp.example.org
IdentityFile ~/.ssh/id_rsa.pub
IdentitiesOnly yes
PasswordAuthentication no
PubkeyAuthentication yes
Run Code Online (Sandbox Code Playgroud)
但是,当拔掉硬件时,gpg 会从代理中删除密钥,随后的 ssh 调用会导致:
Enter passphrase for key '/home/user/.ssh/smartcard.pub':
Run Code Online (Sandbox Code Playgroud)
这看起来很奇怪,因为 ssh 和 ssh-agent 都应该清楚该文件仅包含公钥。如果 ssh 无法访问指定的密钥,是否有一种好方法可以让 ssh 详细失败,而不是要求输入(毫无意义的)密码?
不完整的解决方案:
IdentitiesOnly- ssh 然后将按预期尝试所有可用密钥- 但会导致服务器限制每个会话的身份验证尝试出现问题alias ssh='grep ^4096 <(ssh-add -l)' && ssh'- 有效,但如果有人想找出他的 ssh 设置被破坏的原因,则会引起头痛使用OpenSSH 7.9或更高版本,它至少会打印一些错误:
$ ssh example.com
Load key "/home/user/.ssh/smartcard.pub": invalid format
user@example.com: Permission denied (publickey).
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1605 次 |
| 最近记录: |