web-dev-qa-db-ja.com

Amazon EC2SSHから自分自身をロックアウト-このサービスはsftp接続のみを許可します

ドー。

SFTP経由でのrootログインを許可するために、ForceCommand internal-sftp/etc/ssh/sshd_configをいじった後、AmazonEC2ボックスでSSHから自分自身をロックアウトしました。

SFTPは引き続き正常に機能しますが、PuTTYは即座に停止します。例:

PuTTY

ここで奇妙なのは、SFTPが引き続き正常に機能し、現在rootとしてログインできることです(変更を加えたため)。そのため、WinSCPウィンドウが開いており、何でもトロールできます。ものを好きにして編集します。

以下を使用して別のLinuxボックスから接続しようとすると、

ssh -i keyfile.pem [email protected] -p [portnumber]

私は次の応答を受け取ります:

This service allows sftp connections only.
Connection to [hostname] closed.

ForceCommand internal-sftp/etc/ssh/sshd_configから正常に削除しましたが、service ssh restartをリモートで実行できません。 sftpから!プレフィックスを付けて実行すると、機能したと表示されますが、リスニングポートが変更されていないため、機能していないことがわかります。

5
James Spittal

削除済みForceCommand internal-sftp from /etc/ssh/sshd_configとサーバーを再起動し(構成ファイルを更新するため)、私は戻ってきました。

6
James Spittal

sftpから!プレフィックスを付けて実行すると、機能したと表示されます

あります!ただし、!は、サーバーではなくクライアントでコマンドを実行します。したがって、クライアントで誤って変更した可能性があるものに注意してください。

SFTPプロトコルは、クライアントがサーバー上で実行するコマンドを指定することを意図的に許可していません。これはファイル転送プロトコルにすぎません。

ただし、実行されるファイルにコマンドを書き込むことにより、サーバー上でコマンドを間接的にトリガーすることができます。たとえば、atジョブを/var/spool/cron/atjobsにドロップできます(ジョブファイルと.SEQファイルに何を書き込むかがわかっている場合— atスプール形式は完全に簡単ではありません)。 /etc/crontabまたはその他のcrontabを編集できます。通常、SFTPのみのユーザーはホームディレクトリに制限されますが、ファイルシステム全体へのルートアクセスがあるため、完全なSSHアクセスのないSFTPは実際にはセキュリティを提供せず、不便です。

したがって:

  1. sftpを使用して、/etc/ssh/sshd_configおよび/etc/crontabをダウンロードします。
  2. ダウンロードしたファイルを編集してForceCommand行を削除し、service ssh restart(または/etc/init.d/ssh restartまたはinitシステムが必要とするもの)をrootとして実行するcronジョブを追加します。
  3. sftpを使用して、変更されたファイルをアップロードします。
  4. Cronジョブがトリガーされるのを待ちます。
  5. sshを使用してログインし、一時的なcronジョブを編集します。