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

推薦する

CSS3を使用してオンラインライブ放送に似たキューアニメーションを実装する方法

以前、グループの友人が質問しました。つまり、ミニプログラムでユーザーがオンラインになったときに、ライ...

JDBC 探索 SQLException 分析

1. SQLExceptionの概要JDBC を使用してデータ ソース (この記事のデータ ソースは...

Vue+Echart 棒グラフで疫病データ統計を実現

目次1. まずプロジェクトにechartsをインストールします2. echartsに縦棒グラフテンプ...

MySQLのルートパスワードをリセットする最も簡単な方法

私の MySQL バージョンは MYSQL V5.7.9 です。古いバージョンを使用してください: ...

HTMLタグのフルネームと機能の紹介

アルファベット順DTD: このタグが許可される XHTML 1.0 DTD を示します。 S=厳密、...

MySQLクエリキャッシュの簡単な使い方の詳細な説明

目次1. クエリキャッシュの実装プロセス2. クエリキャッシュを構成する3. クエリキャッシュを有効...

Vueフロントエンドの効率的な開発のためのレンダリング手順をリストします

v-for ディレクティブリストといえば、ループについても触れなければなりません。v-for 命令は...

Dockerがログファイルを保存する場所の詳細な説明

目次ログはどこに保存されますか?コンテナ内のアプリケーションからのログを表示するDockerデーモン...

MySQLとOracleのメタデータ抽出例分析

目次序文メタデータとは参照文書アドレスまずはMySQLについてお話しましょうOracleについて話し...

SVNサービスバックアップ操作手順の共有

SVN サービスのバックアップ手順1. ソースサーバーとターゲットサーバーを準備するソースサーバー:...

HTML 終了タグの問題と W3C 標準

W3C の原則によれば、XML の各開始タグには対応する終了タグが必要です。つまり、<html...

MySQL 文字セットの概要

目次文字セット比較ルール4つのレベルの文字セットと比較規則3つのシステム変数このノートは主にMySQ...

Linux での mysql8.018 のインストールと設定のプロセスの詳細な説明

Windowsでのインストールの紹介:こちらもご覧ください –》WindowsでのMySQL 8.0...

Linux でファイルのユーザーとグループを変更する方法

Linux では、ファイルが作成されると、そのファイルの所有者はファイルを作成したユーザーになります...

Vue+SpringBoot+Shiroのクロスドメイン問題を解決する

目次1. Vueフロントエンドを構成する1. クロスドメイン構成を開発する2. 本番環境のクロスドメ...