是否有环境变量“SSH_PWD”,如何使用它来恢复注销前的最后一个“密码”?

是否有环境变量“SSH_PWD”,如何使用它来恢复注销前的最后一个“密码”?

该实验室有几台“Raspberry Pi”机器,它们运行Debian 风格操作系统。它们用于特定目的 - 也就是说,在我建立 SSH 连接后,我cd会访问“我的东西”所在的文件夹。例如,在我目前连接的那个上,我大部分时间都花在文件夹中~/pico/ina260_i2c/build

当我通过 SSH 登录到这台机器时,我希望被带到我注销之前所在的文件夹;即通常到~/pico/ina260_i2c/build。当然不是这样总是这种情况,这就是为什么我想被带到注销之前我所在的文件夹

我的问题是,“我如何配置我的系统才能实现这一点?”

这是我尝试过的:

  1. 我发现了我以为的完美的回答我的问题这里...完美的但它不起作用!我知道它至少有一个问题(ssh是 in/usr/bin/ssh而不是/bin/ssh),并修复了它。除此之外,它对我来说这里的失败是SSH_PWD环境变量(派生自PWD)在登录后无法持久保留SSH

    似乎有希望,但不起作用:

    $ sudo echo "SendEnv SSH_PWD" >> /etc/ssh_config && sudo echo "AcceptEnv SSH_PWD" >> /etc/sshd_config
    # edit ~/.profile to add the following: 
    alias ssh='env SSH_PWD="$PWD" /usr/bin/ssh'
    if [ -n "$SSH_PWD" ]; then   # i.e. -n => non-zero string; 
    cd "$SSH_PWD"
    unset SSH_PWD
    fi
    

    我也尝试过PermitUserEnvironment yes设置/etc/ssh/sshd_config

  2. 其他对答案的搜索发现了一些事情似乎有前途,但我根本不知道PAM所以即使尝试这个解决方案也很紧张。

答案1

假设您的登录 shell 在这些系统上是 bash,您可以在远程端完全完成此操作,而无需编辑任何系统配置。编辑~/.bash_logout(如果不存在则创建它),然后添加:

# Save current directory to a file on logout
printf '%s\0' "$PWD" > ~/.my_previous_session_pwd

并在您的~/.bash_profile(或~/.profile,以存在者为准)中,添加:

# If the previous session's working directory was saved to file, switch to it
if
  [ -r ~/.my_previous_session_pwd ] &&
    IFS= read -rd '' old_dir < ~/.my_previous_session_pwd &&
    [ -d "$old_dir" ]
then
  cd -- "$old_dir"
fi

相关内容