这是我长期以来一直遇到的一个问题,但每次我试图弄清楚一些事情时,我都会迷失方向,所以我想我最好在这里问一下,也许更有经验的人可以帮助我。
我的 Raspberry Pi 正在运行 Raspbian Jessie,我经常使用 SSH 登录它并远程执行命令。在我的第一个 SSH 会话中,我注意到每次登录时都会在 RPi 上ssh-agent生成一个进程,但在ing时从未被杀死:多次登录和注销导致生成一堆进程,只是挂在那里什么也不做。四处闲逛,到处阅读手册页和答案,我最近了解了. 此外,我注意到发出会导致产生另一个实例。我在相关的手册页上阅读exitssh-agentssh-agentsource ~/.bashrcssh-agentSSH_AGENT_PID应该定义环境变量,因为ssh-agent程序应该在 an 中启动eval以执行其输出并定义此类变量,然后其他与 SSH 相关的命令使用这些变量,包括ssh-agent -k(杀死相对于当前会话的代理),所以我跑echo $SSH_AGENT_PID和echo $SSH_AUTH_SOCK,但它们都是空的。我突然意识到:可能该进程不会在注销时被杀死,因为它ssh-agent -k试图从未设置的环境变量中读取其 PID。
由于ssh-agent没有在注销时被杀死,并且这肯定会发生,因为所需的环境变量没有设置,它只能意味着一件事:调用ssh-agentlogin 的人可能没有以正确的方式(这将是eval "$(ssh-agent -s)")。所以我想:嗯,有什么问题吗?我会找到执行哪个配置文件、服务或登录脚本来启动代理并手动修复它!它到底在哪里?
由于我注意到ssh-agent每次调用时都会生成an source ~/.bashrc,这是我检查的第一个文件,但那里甚至没有远程引用与 SSH 相关的任何内容。我一直在使用以下所有文件中vi的字符串搜索ssh,但一无所获:
~/.bashrc
~/.profile …Run Code Online (Sandbox Code Playgroud)