我想知道是否有办法更改我在 SSH 到我的 Ubuntu 服务器后放入的默认目录。
当我登录到我的服务器时,99% 的时间是访问特定目录中的文件:
/var/www/websites
Run Code Online (Sandbox Code Playgroud)
是否有我可以编辑的配置文件,以确保我在登录时直接进入该目录?
Den*_*ker 82
有以下三种方法可以实现:
cd /var/www/websites到您的.bash_profile. 这仅对交互式登录(例如 ssh)执行。cd /var/www/websites到您的.bashrc. 我在我们的 puppetmasters 上使用这个,因为我总是想在 /etc/puppet/environments/dkaarsemaker 那里而不是我的 homedir :-)ger*_*tas 22
如果您使用密钥进行 SSH 登录,那么您可以通过command=在远程服务器~/.ssh/authorized_keys上的密钥之前添加来更改路径。例子:
command="cd /var/www/websites ; /bin/bash -l" ssh-rsa AAA.....rest of the key
Run Code Online (Sandbox Code Playgroud)
可以为同一用户生成和使用多个密钥。服务器上的一个键可能包含命令,另一个可能不包含 - 这样您就可以在登录时选择预期的行为。你可以简单地用local 把它包起来~/.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
Run Code Online (Sandbox Code Playgroud)
这是会发生的事情:
local$ ssh websites-my-host
webmaster@realhostname:/var/www/websites$ _
Run Code Online (Sandbox Code Playgroud)
或者:
local$ ssh my-host
webmaster@realhostname:~$ _
Run Code Online (Sandbox Code Playgroud)
igo*_*s07 10
从 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
Run Code Online (Sandbox Code Playgroud)
小智 9
默认情况下,Openssh sshd 接受来自客户端的这些环境变量:
AcceptEnv LANG LC_*
Run Code Online (Sandbox Code Playgroud)
您可以使用它从客户端的本地环境向服务器发送一个值,如下所示:
LC_CDPATH=/var/www/websites ssh -o SendEnv=LC_CDPATH user@server
Run Code Online (Sandbox Code Playgroud)
您可以将 SendEnv 指令放在 ~/.ssh/config 中,这样您就不必在命令行中包含它。
如果您将以下内容放在 ~/.profile 中(仅影响交互式登录使用 .profile,影响所有登录使用 .bashrc):
if [ "$LC_CDPATH" -a -d "$LC_CDPATH" ]; then
cd "$LC_CDPATH";
fi
Run Code Online (Sandbox Code Playgroud)
然后它会在您登录时自动将目录更改为环境变量中指定的目录,如果指定了并且是目录。
| 归档时间: |
|
| 查看次数: |
59709 次 |
| 最近记录: |