如何将ssh-agent作为systemd服务启动?网上有一些建议,但都不完整。
如果ssh-agent服务启动成功,如何自动添加未加密的密钥?可能,从列表中添加键~/.ssh/.session-keys会很好。
之后如何SSH_AUTH_SOCK在任何登录会话中进行设置?最正确的方法是将它从ssh-agent服务推送到systemd-logind服务(不知道是否有可能)。简单天真的方法就是将它添加到/etc/profile.
(我已经阅读了本网站上许多看起来相关的问题,我相信这是一个真正的新问题。)
我在很多服务器上都有很多密钥,它们都受到密码保护。
我喜欢输入密码,就像我喜欢输入密码一样 - 这是一个真正的生产力消耗。
ssh-agent + ssh-add命令可用于登录 shell,这意味着您只需在登录时输入一次密码
钥匙串可用于在注销后保持 ssh 代理处于活动状态,例如,您可以拥有它,因此您只需在启动时输入一次密码,或者您可以让它保持活动状态一小时左右。
我遇到的问题是,这两种解决方案通常都是在 shell 登录(例如.zshrc)中启动的,依赖于我在登录时输入我的密码,即使我不需要解锁它。(我对钥匙串让代理无限期地活着不满意。)
我想要的是仅在需要时提示输入密码(对于代理)。
这样我就可以登录到服务器A,做一些东西,然后ssh到服务器B,并在该点被要求提供密码。在服务器 B 上做一些事情,注销。回到 A,做一些更多的事情,再次 ssh 到 B 并且不需要我的密码(它由代理持有)。
我注意到这在像 Gnome 这样的图形桌面上是可能的——当你尝试 ssh 时,你会得到一个弹出窗口,要求输入密码来解锁你的私钥。所以这就是我所追求的,但来自控制台。
我读过man ssh-add,但没有看到像我们那样传递密码的标志ssh-p,其中 is。
我试过
# the -K is for macOS's ssh-add but it's not relevant
ssh-add -q -K ~/.ssh/id_rsa <<< $passphrase
Run Code Online (Sandbox Code Playgroud)
但我得到以下输出:
ssh_askpass: exec(/usr/X11R6/bin/ssh-askpass): No such file or directory
Run Code Online (Sandbox Code Playgroud)
如何在不触发提示的情况下传递密码
更新
为我正在做的事情添加更多上下文,我正在创建一个脚本来为我创建 SSH 密钥。它将生成密码,使用该密码的 SSH 密钥,并将其添加到代理中。
# the -K is for macOS's ssh-add but it's not relevant
ssh-add -q -K ~/.ssh/id_rsa <<< $passphrase
Run Code Online (Sandbox Code Playgroud)
按照斯蒂芬的回答,我不确定这将如何运作。似乎我不得不创建一个临时脚本并将其保存到磁盘,以便 SSH_ASKPASS 工作。有任何想法吗?
我有从变量加载 SSH 密钥的脚本(作为 CI 环境中脚本的一部分),以便不将私有文件保存在公共存储库中,但是ssh-add抱怨权限错误(似乎无法绕过它)。所以我的方法是找到更改动态创建的匿名管道权限的方法。
例如:
$ stat <(:)
File: ‘/dev/fd/63’
Size: 0 Blocks: 0 IO Block: 512 fifo
Device: 397f3928h/964639016d Inode: 818277067 Links: 0
Access: (0660/prw-rw----) Uid: ( 501/ kenorb) Gid: ( 20/ staff)
Access: 2015-10-10 22:33:30.498640000 +0100
Modify: 2015-10-10 22:33:30.498640000 +0100
Change: 2015-10-10 22:33:30.498640000 +0100
Birth: 2015-10-10 22:33:30.498640000 +0100
Run Code Online (Sandbox Code Playgroud)
显示0660许可。我检查了我的umask,似乎与此无关。
这是一个简单的测试(在 OS X 上,默认为 0660):
$ ssh-add <(cat ~/.ssh/id_rsa)
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: UNPROTECTED PRIVATE KEY FILE! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0660 …Run Code Online (Sandbox Code Playgroud)