CentOSサーバーにSSHで接続するときのデフォルトパスを変更しますか?


12

CentOS 5.7 Webサーバーを使用していますが、SSHを使用して接続するときに、デフォルトの場所を変更したいと考えています。

現在、私はに着陸し/home/username/home代わりに着陸したいです。

私はルートとして入り、追加PermitUserEnvironment yesしました/etc/.ssh/sshd_config-そして、私はそれを理解しているのでsshenvironmentファイルのユーザー自身のフォルダーをスイープします。export path=$PATH:$HOMEここで、または.bashrcまたは.bash_profileファイルのいずれかで動作しないように思えるので、私はこの環境ファイルに正確に追加するものについて確信していませんとにかく、SSH接続は非対話型のシェルですか?)。

前もって感謝します。

回答:


14

認証にPAMを使用している場合は、おそらく最も可能性が高いでしょう。にルートヘッドとして/etc/passwd

そこにユーザー名とパスが表示されるはずです!そこに変更すると、あなたは自由に家にいます!

編集-申し訳ありませんが、ホームフォルダーを変更したくないのではないかと思いました。その場合は、単に以下を追加します:

cd /home

.bashrcファイルの最後まで!


4
usermod書き込むユーザーに関する何かを変更するときは/etc/passwd、間違いを防ぐために使用することをお勧めしますusermod -d /home user
-laebshade

1
その側のコメント.bashrcは私をやし顔にしました。それはとてもシンプルで明白です、私はそれを考えていたのに!よくやった。称賛!
cwallenpoole

4

覚えておくべきこと~/.ssh/environmentは、シェルまたはsshコマンドが生成される前に読み取られるため、(たとえば)exportも$ PATHも意味がありません。ここでは、環境変数のみを設定できます(一般的なシェルコマンドは実行できません)。

非対話型のsshシェルの環境を取得して変更した場合、非対話型コマンドに必要なものを取得する必要があります。例えば:

$ ssh mylogin@myserver env

サーバー上でsshが始まるものを提供します。~/.ssh/environmentファイルを次のように書く場合:

PATH=/usr/local/bin

上記を再実行すると、「bash:env:command not found」が表示されます。良い!

次に、システムのベースsshd(つまり、最初の "ssh .... env"呼び出し)のベースに基づいて、明示的にパスを構築します。たとえば(/usr/local/bin先頭に追加):

PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

また、シェルはホームパスで(デフォルトで)起動するため、CWDを~/.ssh/rc~/.ssh/environment読み取り後に実行されますが、sshシェルまたはコマンドの前に)設定しようとすると便利ではないことに注意してください。


ダブル+1、この情報を探していました
スピンアップ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.