ああ。
ForceCommand internal-sftp
/etc/ssh/sshd_config
SFTPを介したログインを許可するために前後に、root
Amazon EC2ボックスで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
プレフィックスを使用してこれを実行すると、機能していると表示されますが、!
リスニングポートが変更されていないために機能しないことがわかります。
答え1
ForceCommand internal-sftp
構成ファイルを更新するためにサーバーを削除して再/etc/ssh/sshd_config
起動し、戻りました。
答え2
sftp
プレフィックスを使用してこれを実行すると、機能するとマークされます!
。
持っている!ただし、!
サーバーではなくクライアントでコマンドを実行してください。したがって、クライアントが誤って変更できることを知っておく必要があります。
SFTP プロトコルは、意図的にクライアントがサーバーで実行するコマンドを指定することを許可しません。それはファイル転送プロトコルです。
ただし、実行するファイルにコマンドを書き込むことで、サーバー上でコマンドを間接的にトリガーできます。たとえば、at ジョブを置くことができます (作業ファイルとファイルに何を書き込むかを/var/spool/cron/atjobs
知っている場合は、at スプール形式が完全にマイナーではありません)。編集したり、他のcrontabを.SEQ
使用したりできます。/etc/crontab
通常、SFTP専用ユーザーはホームディレクトリに制限されていますが、ファイルシステム全体へのルートアクセス権がある場合、完全なSSHアクセス権を持たないSFTPは実際にはセキュリティを提供せず、不便です。
したがって:
- ダウンロードと
sftp
。/etc/ssh/sshd_config
/etc/crontab
- ダウンロードしたファイルを編集してその行を削除し、ルート(または初期化システムが必要なもの)で実行されるクローンタスクを追加します
ForceCommand
。service ssh restart
/etc/init.d/ssh restart
- 変更されたファイルをアップロードするために使用されます
sftp
。 - クローンジョブが実行されるまで待ちます。
ssh
ログインして一時的なクローンジョブを編集するために使用されます。