当我SSH到服务器更改默认目录

我想知道是否有一种方法来改变我进入我的Ubuntu服务器后,我进入SSH的默认目录。

当我login到我的服务器时,99%的时间是访问特定目录中的文件:

/var/www/websites 

有没有我可以编辑的configuration文件,以确保我login时直接进入这个目录?

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

  • 将服务器上的homedirectory更改为/ var / www / websites(这不是一个好主意)
  • cd /var/www/websites.bashrc的末尾。 我在我们的puppetmasters上使用这个,因为我总是想在/ etc / puppet / environments / dkaarsemaker那里而不是我的homedir 🙂

如果您使用密钥进行SSHlogin,则可以通过将command=前置于远程服务器上的~/.ssh/authorized_keys某个键之前来更改path。 例:

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

为同一用户生成和使用多个密钥是很好的。 服务器上的一个键可能包含其他命令而不是 – 这样你就可以在login时select预期的行为。 你可以简单地用~/.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:~$ _ 

Openssh sshd默认接受来自客户端的这些环境variables:

 AcceptEnv LANG LC_* 

您可以使用它从客户端的本地环境向服务器发送一个值,如下所示:

 LC_CDPATH=/var/www/websites ssh -o SendEnv=LC_CDPATH user@server 

您可以将SendEnv指令放置在〜/ .ssh / config中,因此您不必将其包含在命令行中。

如果将以下内容放在〜/ .profile中(仅影响交互式login,请使用.profile来影响所有login使用.bashrc):

 if [ "$LC_CDPATH" -a -d "$LC_CDPATH" ]; then cd "$LC_CDPATH"; fi 

然后,它会自动将目录更改为在login时指定的环境variables中指定的目录,如果指定了它并且是目录。