我想知道是否有办法更改我通过 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