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

推薦する

dockerを使用してTomcatをデプロイし、Skywalkingに接続する

目次1. 概要2. dockerを使用してTomcatをデプロイし、Skywalkingに接続する要...

Spring環境を構成するためのDocker-composeの手順

最近、メンバーがテストできるようにプロジェクトをパッケージ化する必要がありますが、パッケージ化された...

カルーセル効果を実現するネイティブJavaScript

この記事では、カルーセルの効果を実現するためのJavaScriptの具体的なコードを参考までに共有し...

複数のドメイン名、ポート、IP仮想ホストに基づくNginx構成

1. タイプの導入1.1 ドメインベースの仮想ホスティングいわゆるドメイン名ベースの仮想ホストとは、...

HTML 基本要約推奨事項 (タイトル)

HTML: タイトル見出しは <h1> - <h6> などのタグによって定...

Vue コンポーネントの切り替え、動的コ​​ンポーネント、コンポーネントのキャッシュについて

目次1. コンポーネント切り替え方式方法1: v-ifとv-elseを使用する方法 2: 組み込みコ...

Vue でスロットを使用する方法についての簡単な説明

定義と使用方法:コンポーネントのテンプレートでスロットタグの定義を使用します。デフォルトの表示値は、...

MySQL における悲観的ロックと楽観的ロック

リレーショナル データベースでは、悲観的ロックと楽観的ロックがリソース同時実行シナリオのソリューショ...

非常に詳細な Vue-Router のステップバイステップのチュートリアル

目次1. ルータビュー2. ルータリンク3. リダイレクト4. ルーティングエイリアス5. ルーティ...

HTMLを使用して、IPを制限する投票ウェブサイトの不正行為スキームを実装する

これは、IP アドレスが制限されている投票 Web サイトの不正行為の手口です。この方法は、投票 W...

ES6 における Object.assign() の使い方の詳細な説明

目次2. 目的2.1 オブジェクトにプロパティを追加する2.3 オブジェクトの複製2.4 複数のオブ...

MySql への新しいユーザーの追加、ユーザー用のデータベースの作成、ユーザーへの権限の割り当ての概要

1. 新しいユーザーを追加するローカルIPアクセスのみを許可する '123456' ...

mysql5.7 でユーザーの初期パスワードを変更する方法

ユーザーが初めて MySQL データベースをインストールするとき、初期のルート パスワードを変更する...

vsftpd ユーザーが ssh 経由でログインすることを禁止する方法

序文vsftp は使いやすく安全な FTP サーバー ソフトウェアです。システムユーザーまたは仮想ユ...

React は入力値を取得し、2 つのメソッドの例を送信します

方法1: DOMが提供するイベントオブジェクトのターゲットイベント属性を使用して値を取得し、送信する...