Linux オペレーティング システムで ssh/sftp を構成して権限を設定する方法

Linux オペレーティング システムで ssh/sftp を構成して権限を設定する方法

FTP と比較すると、SSH ベースの sftp サービスは、セキュリティが優れており (非プレーンテキストのアカウントとパスワードの送信)、権限管理が便利です (ユーザーのアクティブ ディレクトリを制限)。

1. sftpアカウントを開き、ユーザーがsftp経由でのみファイルを操作でき、サーバーにsshできないようにします。

2. sftpのChrootDirectory設定を使用して、ユーザーが指定されたディレクトリでのみアクティブになるように、ユーザーのアクティブディレクトリを制限します。

バージョンを確認する

#ssh バージョンが 4.8p1 以降であることを確認してください。それ以外の場合は、アップグレード後にこのバージョンよりも高くなることがよくあります。
ssh -V

新しいユーザーとユーザーグループを作成する

#ユーザーグループ sftp を追加
グループ追加 sftp
#ユーザーを追加指定されたホームディレクトリ指定されたユーザーグループはシェルログインを許可しません
useradd -d /home/sftp -m -g sftp -s /bin/false sftp
#ユーザーパスワードを設定する
パスワード sftp

アクティブディレクトリ

#制限したいアクティブディレクトリを設定する
mkdir -p /var/www/sftp
#権限を設定します。このディレクトリを後続の chroot アクティブ ディレクトリに使用する場合は、ディレクトリの所有者は root である必要があることに注意してください。 ! !
chown root.sftp /var/www/sftp

基本的なssh設定

# ssh サービスの設定ファイル
vi /etc/ssh/sshd_config

#基本的なsshリモートログイン設定
# 検証を有効にする
パスワード認証はい
#空のパスワードでのログインを無効にする
空のパスワードを許可しない
# リモートログインを有効にする
PermitRootLogin はい

これで、SSHを使用してサーバーにリモートログインできるようになりました。

sftpの設定

#ここでは、システムに組み込まれた内部SFTPサービスを使用してニーズを満たします
#サブシステム sftp /usr/libexec/openssh/sftp-server
サブシステム sftp 内部 sftp

サブシステム

サブシステムは、ssh のサブモジュールを指します。ここで有効になっているのは sftp モジュールです。このサービスを提供するために、システムに組み込まれている internal-sftp を使用します。実際、これを構成した後、アカウント ssh を使用して、または ftp クライアント sftp を使用してログインできます。

ユーザーがsftpを使用してサーバーにログインできるようにしたいがsshは使用したくない、またユーザーのアクティブディレクトリを制限したい場合は、次の設定を続行します。

# ログインユーザーに対する制限
マッチグループ sftp
ChrootDirectory /var/www/sftp # %h を使用してユーザーのホームディレクトリを表し、%u を使用してユーザー名を表すこともできます。
ForceCommand internal-sftp # システムの組み込み internal-sftp サービスの使用を強制し、ユーザーが ftp モードを使用してのみログインできるようにします。
AllowTcpForwarding いいえ
X11転送なし

[ユーザー|グループ] userName|groupName に一致

Match [User|Group] sftp これは、ログインしているユーザーの権限制限設定です。 Match は、一致したユーザーまたはユーザー グループに対して有効になり、ssh の一般的な設定よりも高くなります。

ChrootDirectory ユーザーのアクティブ ディレクトリは %h でマークできます。%u はユーザー名を表します。Match によって一致したユーザーがログインすると、セッションのルート ディレクトリはこのディレクトリに切り替わります。ここでは 2 つの点に特に注意する必要があります。

1. chroot パス上のすべてのディレクトリは、最大権限が 0755 の root によって所有されている必要があります。これは注意して遵守する必要があります。したがって、非 root ユーザーとしてログインする場合は、ログインしたユーザーが操作する権限を持つ chroot の下に新しいディレクトリを作成する必要があります。

2. chroot が設定されると、ログイン時に、対応するユーザーのセッションのルート ディレクトリ "/" がこのディレクトリに切り替わります。ログインに sftp プロトコルではなく ssh を使用する場合は、次のようなプロンプトが表示される可能性があります。

/bin/bash: そのようなファイルまたはディレクトリはありません

このプロンプトは非常に正確です。この時点でログインしているユーザーの場合、セッションのルート ディレクトリ "/" は、設定した chroot ディレクトリに切り替えられています。chroot がシステムの "/" ディレクトリでない限り、この時点では chroot/bin の下に bash コマンドはありません。これは、ユーザーを追加するときに設定される -s /bin/false パラメータに似ています。シェルの初期コマンドは /bin/false なので、当然リモート ssh ログインは利用できません。

ForceCommand ユーザーにセッションへのログインを強制するときに使用する初期コマンド。このオプションが上記のように設定されている場合、一致したユーザーは sftp プロトコルを使用してのみログインでき、ssh を使用してログインすることはできません。
このサービスでは、SFTP 接続のみが許可されます。

設定が完了したら、sshdサービスを再起動します。

service sshd restart

知らせ:

1. chroot によって発生する可能性のある問題。chroot はセッションのルート ディレクトリをこのディレクトリに切り替えるため、このセッションのパスが chroot/bin/bash になるため、ssh ログインでエラー メッセージ「/bin/bash: No such file or directory」が表示される場合があります。

2. ForceCommand はセッション開始時の初期コマンドです。例えば、internal-sftp を指定すると、This service allow sftp connections only と表示されます。これは、usermod -s /bin/false コマンドと同じです。ユーザーがセッションにログインすると、/bin/bash コマンドは呼び出されず、当然サーバーへの ssh ログインは実行できません。

要約する

上記は、編集者が紹介した Linux オペレーティングシステムでの ssh/sftp の構成と権限の設定方法です。皆様のお役に立てれば幸いです。ご質問がある場合は、メッセージを残してください。編集者がすぐに返信します。また、123WORDPRESS.COM ウェブサイトをサポートしてくださっている皆様にも感謝申し上げます。

以下もご興味があるかもしれません:
  • vsftp を使用して Linux で FTP サーバーを構築する (パラメータの説明付き)
  • LINUX Centos7 ビルド vsftpd サービス
  • Linux で vsftpd をインストールして設定するための詳細な手順 (推奨)
  • Linux での VSFTP サービスのセットアップ プロセス
  • Linux sftp コマンドの使用法の概要

<<:  MySQL に絵文字表現を挿入できない問題の解決方法

>>:  2048 ゲームを実装するためのネイティブ js

推薦する

ウェブページの右側に固定されたフローティングレイヤーの実装コード

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

エラー 1862 (HY000): パスワードの有効期限が切れています。ログインするには、..... を使用してパスワードを変更する必要があります。

エラーメッセージ:エラー 1862 (HY000): パスワードの有効期限が切れています。ログインす...

MySql の忘れたパスワードの変更方法はバージョン 5.7 以上に適しています

1. まずmysqld.exeプロセスを停止します2. cmd を開き、mysql の bin ディ...

Linux の fsevents モジュールによって発生する npm ls エラーの解決方法の詳細な説明

Mac で開発されたプロジェクトがあり、パッケージ npm i がインストールされており、すべて正常...

mysql5.7 ユーザー権限の作成、ユーザーの削除、権限の取り消し

1. ユーザーを作成します。注文: 'password' によって識別される ...

MYSQL における char と varchar の違い

CHAR 型と VARCHAR 型は似ていますが、主に格納場所、末尾のスペース、取得方法が異なります...

Postman 自動インターフェーステストの実践

目次背景説明GETリクエストの作成事前リクエストスクリプトで署名を作成するスクリプトは環境変数に書き...

JavaScript イベント ループのケース スタディ

js のイベント ループJavaScript はシングルスレッドなので、同じイベントで実行できるメソ...

MySqlは指定されたユーザーのデータベースビュークエリ権限を設定します

1. 新しいユーザーを作成します。 1. SQL ステートメントを実行して新しいものを作成します (...

Linux入力サブシステムフレームワーク原理の分析

入力サブシステムフレームワークLinux 入力サブシステムは、上から下に向かって、入力サブシステム ...

ホストサービスにアクセスするDockerでのサービスの実装

目次1. シナリオ2. 解決策3. 結論4. 参考文献1. シナリオ日常の開発およびテスト作業には ...

Tomcat マルチレイヤーコンテナの設計に関する簡単な説明

目次コンテナ階層サーブレットの検索を要求するプロセス仕組みTomcat のコンテナは Servlet...

SASSで変数のデフォルト値を使用する方法

SASS で定義された変数では、後で設定された値によって古い値が上書きされます。 $色: 赤; $色...

MySQL SQL ステートメント分析とクエリ最適化の詳細な説明

パフォーマンスの問題のあるSQL文を取得する方法1. ユーザーからのフィードバックを通じてパフォーマ...

Navicat 経由で MySQL にリモート接続する方法

Navicat を使用して IP 経由で直接接続すると、次のようなさまざまなエラーが報告されます: ...