ドー。
SFTP経由でのroot
ログインを許可するために、ForceCommand internal-sftp
で/etc/ssh/sshd_config
をいじった後、AmazonEC2ボックスでSSHから自分自身をロックアウトしました。
SFTPは引き続き正常に機能しますが、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
から!
プレフィックスを付けて実行すると、機能したと表示されますが、リスニングポートが変更されていないため、機能していないことがわかります。
削除済みForceCommand internal-sftp
from /etc/ssh/sshd_config
とサーバーを再起動し(構成ファイルを更新するため)、私は戻ってきました。
sftp
から!
プレフィックスを付けて実行すると、機能したと表示されます
あります!ただし、!
は、サーバーではなくクライアントでコマンドを実行します。したがって、クライアントで誤って変更した可能性があるものに注意してください。
SFTPプロトコルは、クライアントがサーバー上で実行するコマンドを指定することを意図的に許可していません。これはファイル転送プロトコルにすぎません。
ただし、実行されるファイルにコマンドを書き込むことにより、サーバー上でコマンドを間接的にトリガーすることができます。たとえば、atジョブを/var/spool/cron/atjobs
にドロップできます(ジョブファイルと.SEQ
ファイルに何を書き込むかがわかっている場合— atスプール形式は完全に簡単ではありません)。 /etc/crontab
またはその他のcrontabを編集できます。通常、SFTPのみのユーザーはホームディレクトリに制限されますが、ファイルシステム全体へのルートアクセスがあるため、完全なSSHアクセスのないSFTPは実際にはセキュリティを提供せず、不便です。
したがって:
sftp
を使用して、/etc/ssh/sshd_config
および/etc/crontab
をダウンロードします。ForceCommand
行を削除し、service ssh restart
(または/etc/init.d/ssh restart
またはinitシステムが必要とするもの)をrootとして実行するcronジョブを追加します。sftp
を使用して、変更されたファイルをアップロードします。ssh
を使用してログインし、一時的なcronジョブを編集します。