在关闭 SSH 连接之前自动运行代码

The*_*nic 7 ssh ssh-agent

我正在远程连接到共享服务器,并且我希望关闭连接之前在远程机器中自动执行一行代码(例如通过按 Ctrl+D)。

更具体地说,我想在我离开之前杀死 SSH 代理,因为我注意到即使在我离开后它仍然在运行。代理是由另一个程序启动的,所以我认为在我离开之前杀死它会更容易,而不是改变它的启动方式。

是否可以关闭 SSH 连接之前自动运行任意命令(如下所示)?

# user attempts to close connection

# an arbitrary code or script runs
eval "$(ssh-agent -k)"

# connection is closed
Run Code Online (Sandbox Code Playgroud)

也许类似于-t标志 ( ssh -t user@domain.com 'cd /some/path; bash -l') 的东西,但它在断开连接之前而不是在连接之后运行。

ibu*_*fen 15

你可以设置一个trapshell 退出.bashrc时运行的:

就像是

trap 'test -n "$SSH_AGENT_PID" && eval "$(/usr/bin/ssh-agent -k)"' 0
Run Code Online (Sandbox Code Playgroud)

可选地添加一个例程 .bash_logout

  • @TheMechanic 是的。它整齐地“隐藏”在“Bash 启动文件”下 https://www.gnu.org/software/bash/manual/bash.html#Bash-Startup-Files (5认同)