更改 SSH 到 CentOS 服务器时的默认路径?

Ben*_*Ben 11 ssh centos home sshd

我有一个 CentOS 5.7 Web 服务器,我想更改使用 SSH 连接时登陆的默认位置。

目前我登陆/home/username,我想登陆/home

我已经以 root 身份进入并添加PermitUserEnvironment yes/etc/.ssh/sshd_config- 据我所知,这会扫描用户自己的ssh文件夹以查找environment文件。我不确定的是我要添加到这个环境文件中的内容,因为export path=$PATH:$HOME似乎不起作用,无论是在这里还是在我的 .bashrc 或 .bash_profile 文件中(据我所知,这不会有什么不同)无论如何,因为 SSH 连接是非交互式 shell?)。

提前致谢。

小智 14

如果您使用 PAM 进行身份验证,这可能是最有可能的。作为根头进入/etc/passwd.

在那里你应该看到你的用户名和路径!在那里改变它,你就可以自由回家了!

编辑 - 抱歉,我突然想到您可能不想更改您的主文件夹。在这种情况下,只需添加:

cd /home
Run Code Online (Sandbox Code Playgroud)

.bashrc文件底部!

  • 在更改与写入 `/etc/passwd` 的用户有关的任何内容时,最好使用 `usermod`,以防止错误:`usermod -d /home user`。 (4认同)

小智 6

要记住的是,它~/.ssh/environment是在生成 shell 或ssh命令之前读取的,因此(例如)export 和 $PATH 都没有意义。您只能在此处设置环境变量(不能运行一般的 shell 命令)。

如果您为非交互式 ssh shell 获取环境,然后对其进行修改,您应该获得非交互式命令所需的内容。例如:

$ ssh mylogin@myserver env

会给你什么 ssh 在你的服务器上开始。如果您将~/.ssh/environment文件编写为:

PATH=/usr/local/bin

并重新运行上面的,你应该得到“bash: env: command not found”。好的!

现在,根据系统的基础sshd(即第一个“ssh .... env”调用),明确建立您的路径,例如(/usr/local/bin在头部添加):

PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

另请注意,尝试设置 CWD ~/.ssh/rc(在~/.ssh/environment读取之后运行,但在您的sshshell 或命令之前运行)是没有用的,因为您的 shell 将在您的主路径中启动(默认情况下)。