我想知道是否有一种方法来改变我进入我的Ubuntu服务器后,我进入SSH的默认目录。
当我login到我的服务器时,99%的时间是访问特定目录中的文件:
/var/www/websites
有没有我可以编辑的configuration文件,以确保我login时直接进入这个目录?
有两种方法可以实现这一点:
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中指定的目录,如果指定了它并且是目录。