与调用ssh-add将所有密钥添加到ssh-agent不同,是否可以在ssh要求时立即自动添加这些键?同样,由桌面环境启动的代理做什么?
编辑:什么是不同的代理启动桌面环境(例如。(从gnome-keyring-daemon)从命令行启动的代理程序中“添加”这种行为?
在Mate会话(Linux )中,当ssh向代理添加它的第一个键时,就会出现一个新的进程,SSH_AUTH_SOCK似乎是指向这个进程,但是在"ssh“名称(".ssh”而不是"ssh")前面有一个点。此进程由"gnome-keyring-daemon“启动,请检查下面屏幕快照上的进程PID:

发布于 2019-03-15 13:03:41
ssh的最新版本(7.2,2016年初和更新版本)有一个选项AddKeysToAgent,它就是这样做的:
AddKeysToAgent指定是否应该自动将键添加到运行中的ssh-代理(1)。如果将此选项设置为“是”,并且从文件中加载了一个键,则该密钥及其密码将被添加到具有默认生存期的代理中,就像通过ssh-add(1)一样。如果将此选项设置为ask,那么在添加密钥之前,ssh(1)将需要使用SSH_ASKPASS程序进行确认(详见ssh-add(1) )。如果将此选项设置为确认,则必须确认密钥的每次使用,就好像-c选项指定为ssh-add(1)一样。如果此选项设置为“否”,则不会向代理添加任何键。参数必须是“是”、“确认”、“询问”或“否”(默认值)。
至于行为上的差异:ssh-agent协议遵循标准,这可以归结为以下几个方面:客户机(ssh,或ssh-add,或其他感兴趣的人)通过查看环境变量SSH_AUTH_SOCK知道该与谁交谈。该协议稍加简化,有以下操作:
通常,您会在第一类中使用ssh-add。但是,正如所说的那样,新的sshs也会加入。当您询问按需加载密钥时:当您询问可用密钥列表时,代理可能会做一些花哨的事情--标准实现要求您事先添加所有密钥,但桌面环境实现可能在某些钱包存储中有由主密码保护的密钥,并在首次尝试使用任何密钥时询问密码。(或者您的意思是密钥在不同的终端窗口之间共享?)这只是让环境变量SSH_AUTH_SOCK进入所有终端的问题,这就是为什么在会话中启动代理是很好的,因此所有终端都继承了变量。)
https://unix.stackexchange.com/questions/506481
复制相似问题