我想知道是否有办法更改我通过 SSH 进入我的 Ubuntu 服务器后进入的默认目录。
当我登录我的服务器时,99% 的时间都是为了访问特定目录中的文件:
/var/www/websites
是否有我可以编辑的配置文件,以确保我在登录时直接进入该目录?
我想知道是否有办法更改我通过 SSH 进入我的 Ubuntu 服务器后进入的默认目录。
当我登录我的服务器时,99% 的时间都是为了访问特定目录中的文件:
/var/www/websites
是否有我可以编辑的配置文件,以确保我在登录时直接进入该目录?
可以通过三种方式实现这一目标:
cd /var/www/websites
到你的末尾.bash_profile
。这仅针对交互式登录(例如 ssh)执行。cd /var/www/websites
到你的末尾.bashrc
。我在我们的 puppetmasters 上使用这个,因为我总是想在 /etc/puppet/environments/dkaarsemaker 那里而不是我的 homedir :-)警告!首先在非必要帐户上尝试此操作,因为如果您在命令中出错,您可能会失去对远程系统的访问权限。
如果您使用密钥进行 SSH 登录,那么您可以通过在远程服务器上
command=
的密钥之前添加前缀来更改路径。例子:~/.ssh/authorized_keys
可以为同一用户生成和使用多个密钥。服务器上的一个键可能包含另一个可能不包含的命令 - 这样您就可以在登录时选择预期的行为。您可以简单地用local 将其包装起来
~/.ssh/config
:这是将要发生的事情:
或者:
从 OpenSSH 7.6 开始,您可以使用新的 RemoteCommand 选项来实现这一点。
在你的
~/.ssh/config
:Openssh sshd 默认接受来自客户端的这些环境变量:
您可以使用它从客户端的本地环境向服务器发送一个值,如下所示:
您可以将 SendEnv 指令放在 ~/.ssh/config 中,这样您就不必将它包含在命令行中。
如果将以下内容放在 ~/.profile 中(只影响交互式登录使用 .profile,影响所有登录使用 .bashrc):
然后它会在您登录时自动将目录更改为环境变量中指定的目录,如果它被指定并且它是一个目录。
更改整个主目录是另一种选择:
usermod -d /var/www/websites yourusername