当我使用 SSH 连接到服务器时更改默认目录

当我使用 SSH 连接到服务器时更改默认目录

我想知道是否有办法更改我通过 SSH 进入 Ubuntu 服务器后进入的默认目录。

99% 的时间里,当我登录服务器时,都是为了访问特定目录中的文件:

/var/www/websites

是否有一个我可以编辑的配置文件,以确保我登录时直接进入该目录?

答案1

有四种方法可以实现这一点:

  • 添加cd /var/www/websites到你的 末尾.bash_profile。这仅在交互式登录(例如 ssh)时执行。
  • 添加cd /var/www/websites到你的末尾.profile。这更有可能被非 bash 的 shell 调用(例如 zsh)。(从@Phil Hord 的评论中添加)
  • 添加cd /var/www/websites到您的末尾.bashrc。我在我们的 puppetmasters 上使用这个,因为我总是想在 /etc/puppet/environments/dkaarsemaker 而不是我的主目录中 :-)
  • 将服务器上的主目录更改为 /var/www/websites(这不是一个好主意)

答案2

从 OpenSSH 7.6 开始,你可以使用新的 RemoteCommand 选项来实现这一目标。

在你的~/.ssh/config

Host websites-my-host
    HostName <realhostname>
    IdentityFile ~/.ssh/keyfile
    User webmaster
    RequestTTY force # check if this is necessary
    RemoteCommand cd /var/www/websites && bash -l

答案3

警告!首先在非必要帐户上尝试此操作,因为如果您在命令中犯了错误,您可能会失去对远程系统的访问权限。


command=如果你使用密钥进行 SSH 登录,那么你可以~/.ssh/authorized_keys在你的偏僻的服务器。例如:

command="cd /var/www/websites ; /bin/bash -l" ssh-rsa AAA.....rest of the key

为同一用户生成并使用多个密钥是可以的。服务器上的一个密钥可能包含命令,另一个可能不包含 - 这样你就可以在登录时选择预期的行为。你可以简单地用当地的 ~/.ssh/config

Host websites-my-host
    HostName <realhostname>
    IdentityFile ~/.ssh/<key1>  #on the server key with "command"
    User webmaster

Host my-host
    HostName <realhostname>
    IdentityFile ~/.ssh/<key2>  #on the server key without command
    User webmaster

这将会发生以下情况:

local$ ssh websites-my-host
webmaster@realhostname:/var/www/websites$ _

或者:

local$ ssh my-host
webmaster@realhostname:~$ _

答案4

更改整个主目录是另一种选择: usermod -d /var/www/websites yourusername

相关内容