web-dev-qa-db-ja.com

シェルを変更した後、sshルートアクセスが拒否されました

サーバーシェルを変更しようとすると、rootとしてログインできなくなります。

まず、ルートとしてz-Shell(zsh)をインストールしてから、デフォルトのシェルに変更したいと思いました。そのため、「chsh」を使用しました。私のせいは、間違ったパスを入力したことです。ログアウトしてPuTTY経由で新規ログインした後、「アクセスが拒否されました」というメッセージが表示されました。

シェルへのパスが存在しないとき、それは予見可能でした。そこで、コントロールパネルにログインし、filemanagerを介して/ etc/passwdファイルを変更しました。最初の行の間違った最後の部分(rootユーザー)を修正しました。

root:x:0:0:root:/ root:/ usr/bin/zsh

古いシェル/ bin/bashまたは/ bin/shに変更しても、機能しません。 passwdとshadowはライブファイルではないことを読んだので、サーバーを再起動しましたが、それでも同じ問題が発生します

何かアイデアはありますか、他に何ができますか?

OS:Debian 5 + Parallels Plesk 11

2
tobias b.

別のフォーラムで解決策を見つけました。同じ問題を抱えているすべての人にとって、おそらくこのアプローチも役立つ可能性があります。

私のプロバイダーはrootパスワードを変更し、パスワードが受け入れられず、「chsh:PAM認証に失敗しました」というエラーが発生したため、機能しない「chsh -s/bin/bashroot」を試しました。

dave_mysticは解決策を提供しました:

本当の問題は/etc/pam.d/chshにあります。そのファイルでは、ルートからのすべての変更を許可する行の前に、特別なシェルが割り当てられた後、ユーザーが通常のシェルに戻るのを防ぐ行が表示されます。

残念ながら、次の行が最初に起動し、ユーザーのシェルが使用可能なシェルのリストに含まれていなかったため、変更が許可されませんでした。 Sudoを介して「root」である私からの認証行は、最初の行が起動された後にチェックされなかったため、起動されませんでした。

auth requiredpam_shells.so

解決策は、/ etc/pam.d/chshの行を一時的にコメントアウトし、ユーザーのシェルを正しいシェルに変更してから、その行のコメントを削除することでした。

出典: http://ubuntuforums.org/showthread.php?t=17028

だから私は言及された行をコメントアウトし、その後私はシェルを変更することができました。

0
tobias b.
  1. / etc/passwdを編集するには常にvipwを使用し、vipw -s/etc/shadowを編集します。
  2. 使用しようとしているシェルが/ etc/shellsにリストされていることを確認してください。
  3. / etc/selinux/configでSElinuxが「enforcing」に設定されていないことを確認します。 'permissive'または 'disabled'に変更します。 [再起動が必要]
  4. 新しいシェルを試したいときテストのためにログアウトしないでくださいadditionalSSHセッションまたはttyを起動し、起動した場合に備えて現在のセッションを実行したままにします。
  5. ログインプロセスに関連するエラーがないかログを確認してください。これは、elseが間違っていることを示している可能性があります。

それでも自分で修正できない場合は、ホスティングプロバイダーに連絡してください。彼らは10分以内にそれを修正する方法を知っているか、あなたはより良いホストを見つけるべきです。

6
Sammitch