也许这个问题的答案是,这是不可能的,但希望有人知道如何解决这个问题。在过去,在管理员在学校机器中配置Kerberos之前,我能够为多种目的创建ssh密钥。这样做的方法是通过我机器中的~/.ssh/config
文件和服务器中的~/.ssh/authorized_keys
。我的ssh配置文件的示例如下
Host sayHI
IdentityFile path/to/sayHiPrivateKey
HostName servername
User myusername
Host sayHey
IdentityFile path/to/sayHeyPrivateKey
HostName servername
User myusername
然后在authorized_keys
文件中我会
command="echo hi" ssh-rsa sayHiPublicKeyLONGSTRING....
command="echo hey" ssh-rsa sayHeyPublicKeyLONGSTRING....
ssh-rsa otherkeysformypasswordlessentry
通过此设置,我可以执行类似
的操作$ ssh sayHI
hi
$ ssh sayHey
hey
不幸的是,由于我们现在每天都在使用Kerberos进行身份验证,因此现在已经停止了。这意味着现在我做了什么
$ kinit username@SERVERNAME
我输入密码后,我可以按如下方式使用ssh:
$ ssh -K username@hostname
现在我可以访问了。如果我做
$ ssh sayHi
这不起作用,因为它要求我的密码。如果我做
$ ssh -K sayHi
这会让我登录,但它完全忽略了这个应该使用身份的事实,以便我可以运行命令echo hi
。相反,它只是使用kerberos凭据并登录我。所以现在我已经解释了我曾经拥有的功能,有没有人知道是否有可能使用kerberos和ssh恢复它?如果您想让朋友代表您运行命令而不向他们提供您的密码(http://docstore.mik.ua/orelly/networking_2ndEd/ssh/ch08_02.htm),则多个身份文件非常有用。我真的希望这仍然有可能。提前谢谢。
答案 0 :(得分:0)
这取决于服务器是否仍然接受pubkey身份验证(看起来它没有,否则kerberos身份验证没有任何意义)。
根据操作系统的供应商,可能会设置.k5login,但可能无法解决问题。区分命令的更好方法是在客户端上使用一些别名:
alias sayHi="ssh -K host echo Hi"
alias sayHello="ssh -K host echo Hello"
在~/.bashrc
。