通过 ssh 保存工作目录

通过 ssh 保存工作目录

我有大量 Linux 机器,它们都通过 NFS 安装我的主目录。如果我在 ~/foo/bar/baz,我希望能够通过 ssh 连接到另一台机器并自动开始将其用作我的工作目录。似乎没有简单的方法可以做到这一点;我可以想到一些 hack 方式,但在尝试之前我想先检查一下。

答案1

查看 SendEnv (在 中ssh_config) 和 AcceptEnv (在 中sshd_config)。您可能能够发送 PWD;尽管在接收端仅获取 PWD 不足以使新 shell 在所需目录中启动。

因此你可以做类似的事情:

  1. 放入SendEnv SSH_PWD你的ssh_configAcceptEnv SSH_PWD你的sshd_config
  2. 将以下内容添加到您的 .profile 或 .bash_profile:

alias ssh='env SSH_PWD="$PWD" /bin/ssh'
if [ -n "$SSH_PWD" ]; then
   cd "$SSH_PWD"
   unset SSH_PWD
fi

答案2

这个 bash 函数怎么样(假设 bash 真的是你的 shell):

sshcd() {
    CWD=`pwd`
    HOME_BASED=${CWD#$HOME}
    ssh -t $1 "cd ~$HOME_BASED;bash -l"
}

然后您可以sshcd foobar通过 ssh 访问 foobar,在那里更改目录并运行 bash。

答案3

我不知道这是否被认为是“Hacky”,但是这里有一个想法:

由于您的主目录在所有服务器上共享,因此登录时将执行相同的配置文件。您可以让您的 .profile 在底部执行如下操作:

CURR_DIR=$(cat ~/.current_dir)
if [[ -n $CURR_DIR ]] && [[ -d $CURR_DIR ]]; then
  cd $CURR_DIR
fi

~/.current_dir然后,为您的 SSH 命令创建别名来运行一个脚本,该脚本会在运行 SSH 命令之前将当前目录放入您的文件中,并~/.current_dir在关闭 SSH 连接后删除该文件。

我还没有测试过这个,但它可能是一个起点。

祝你好运!

答案4

您可以使用以下内容:

#!/bin/sh
set -eu
gnome-terminal -x ssh -t "$@" "cd $PWD && $SHELL -il"

相关内容