不久前在 StackOverflow 上,我问了这个关于 ssh-agent 和 crontab 的问题。我现在有一个关于 Linux 系统上的 ssh-agent 和 screen 的类似问题。
所以,在我的 Mac 上,ssh-agent 在系统启动时启动,所以我总是可以使用它。如果我使用的是 X-Windows,我认为在我的 linux (redhat el5/fedora) 下是正确的。但是,这是一台远程服务器机器,我总是通过 ssh 登录。
我希望正确设置 ssh 密钥,这样我就不必在 svn 更新或提交期间多次输入密码。我很高兴在每个会话中输入一次我的密码,并且我不鼓励我们的团队使用无密码的 ssh 密钥。
在短暂的闪光时刻,似乎在我的 .bash_profile 中执行“eval `ssh-agent -s`”,并在我注销时与一个命令杀死 ssh-agent 配对,会起作用。但是,我们大量使用screen来管理长时间运行的交互式程序和开发环境。如果您像我刚刚描述的那样启动和停止 ssh-agent,那么当您退出终端时它会被杀死,并且屏幕的子会话(曾经指代该 ssh-agent 实例)将被放弃。
那么......我怎么能成为一个控制台用户,谁使用屏幕,谁使用他的 ssh 密钥的密码,谁不必经常输入密码?
所以我在我的 MacBook 上本地存储了一些服务器的密钥,但是我在虚拟机中工作了相当长的时间,所以我使用 .SSH 连接到虚拟机ssh -A。这允许我从 VM 内部通过 SSH 连接到服务器。
我最近开始使用 tmux 来更好地管理我的终端窗口,但我发现了一个奇怪的问题。虽然我在 tmux 中打开的初始窗口可以使用 SSH,但任何其他打开的窗口都不能。 ssh-add显示从这个 tmux 窗口内部无法打开到我的 SSH 代理的连接。任何想法如何使 tmux 与 SSH 代理转发很好地发挥作用?
我已经看到很多黑客从 tmux(和屏幕)会话中重新建立与 GUI 会话的 SSH 代理的联系。我想知道是否有可能与 GUI 分离并产生一个 ssh-agent 纯粹用于给定的 tmux 会话?代理本身是否必须“用完”其中一个 tmux 窗口以避免被杀死,或者是否有可能在后台生成一个只要会话处于活动状态就持续存在的窗口?