~/.profile
sshまたはputtyを使用してリモートLinuxサーバーにログインする際の実行をバイパスまたは防止する方法はありますか?
~/.profile
sshまたはputtyを使用してリモートLinuxサーバーにログインする際の実行をバイパスまたは防止する方法はありますか?
回答:
あなたはすべてのログインスクリプトを無効にするために探している場合は、使用することができます--noprofile
無効にするフラグを/etc/profile
、~/.profile
など、および--norc
無効にする~/.bashrc
ので、のように:
$ ssh 127.0.0.1 "bash --noprofile --norc"
利用可能な場合は、代替シェルを起動することもできます。私はで台無しにした後、これを使用する必要がありましたchsh
:
$ ssh 127.0.0.1 sh
これにより、空のシェル(プロンプトなし)にドロップされる可能性が高いので、動作ls
するように確認してください。
ターゲットマシンがbashシェルにある場合:
user@host:/$ ssh hostname "bash --noprofile"
または、使用したい別のプロファイルがある場合
user@host:/$ ssh hostname "bash --noprofile; source ~/.other_profile"
他の人が述べたように、接続を開始するときにフラグを指定してbashを実行--noprofile
すると動作しますが、別のシェルを使用している場合、これはオプションである場合とそうでない場合があります。
1つの代替方法は、プロファイルスクリプトにSSH接続自体を検出させ、それに応じて動作させることです。通常、SSH接続は多くの環境変数を設定するため、これは簡単に確認できます。プロファイルの先頭に次のような行を追加するだけで十分です。
if [ "$SSH_CONNECTION" != "" ]; then
echo Logging in with ssh
return
else
echo Logging in with something that is not ssh
fi
# rest of your profile goes here
return
場合は、スクリプトの残りの部分をスキップします$SSH_CONNECTION
SSH接続が開始されるたびに正常に作成される環境変数が設定されているが、。それ以外の場合、プロファイルは通常のように実行されます。
これは、影響を受けるプロファイルスクリプトのみをスキップすることに注意してください。/etc/profile
同様に変更しない限り、他のすべてのプロファイルスクリプト(例:)は引き続き処理されます。