UbuntuサーバーにSSH接続した後、デフォルトディレクトリを変更する方法があるかどうか疑問に思っていました。
サーバーにログインしているときの99%は、特定のディレクトリ内のファイルにアクセスすることです。
/var/www/websites
ログイン時にこのディレクトリに直接移動できるようにする編集可能な設定ファイルはありますか?
これを実現するには2つの方法があります。
cd /var/www/websites
の最後まで.bashrc
。私はいつも自分のホームディレクトリの代わりに/ etc/puppet/environments/dkaarsemakerにいたいので、これをパペットマスターで使用します:-)SSHログインにキーを使用する場合、リモートサーバーでcommand=
のキーの前に~/.ssh/authorized_keys
を前に追加することでパスを変更できます。例:
command="cd /var/www/websites ; /bin/bash -l" ssh-rsa AAA.....rest of the key
同じユーザーに対して複数のキーを生成して使用することは問題ありません。サーバー上の1つのキーにコマンドが含まれ、もう1つのキーに含まれていない可能性があります。これにより、ログイン時に予期される動作を選択できます。 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
これが発生します。
local$ ssh websites-my-Host
webmaster@realhostname:/var/www/websites$ _
または:
local$ ssh my-Host
webmaster@realhostname:~$ _
Openssh sshdはデフォルトで、クライアントから次の環境変数を受け入れます。
AcceptEnv LANG LC_*
これを使用して、次のようにクライアントのローカル環境からサーバーに値を送信できます。
LC_CDPATH=/var/www/websites ssh -o SendEnv=LC_CDPATH user@server
SendEnvディレクティブを〜/ .ssh/configに配置できるので、コマンドラインに含める必要はありません。
〜/ .profileに以下を配置した場合(対話型ログインのみに影響を与えるには.profileを使用し、すべてのログインに影響を与えるには.bashrcを使用します):
if [ "$LC_CDPATH" -a -d "$LC_CDPATH" ]; then
cd "$LC_CDPATH";
fi
次に、ディレクトリが指定されていれば、ログイン時に、環境変数で指定されたディレクトリに自動的に変更します。