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

推薦する

JavaScriptはすべての選択と選択解除の操作を実装します

この記事では、JavaScriptで全選択と全選択解除の操作を実装するための具体的なコードを参考まで...

Portainer を使用した Docker コンテナのデプロイのプロジェクト実践

目次1. 背景2. 操作手順3. Portinerをインストールする3.1 Dockerのデプロイメ...

Vue の 4 つのカスタム命令の説明と使用例

4つの実用的なVueカスタム指示1. Vドラッグ要件: マウスドラッグ要素アイデア:要素のオフセット...

MySQLサービスを開くおよび閉じる2つの方法

方法1: cmdコマンドを使用するまず、DOS ウィンドウを開き、スタート、実行、cmd と入力しま...

CSSレコードテキストアイコン配置のいくつかのソリューション

開発中に画像とテキストが 1 行に表示されることはよくあります。2 つのインライン要素を揃えるのは通...

Ubuntu でパスワードを変更し、パスワードの複雑さのポリシーを設定する方法

1. パスワードを変更する1. 一般ユーザーのパスワードを変更する パスワード現在のパスワードを入力...

異なるドメイン名への PC または携帯電話のアクセスを区別するように Nginx を構成する方法

新しい公式サイトはオンラインですが、携帯電話で新しい公式サイトにアクセスすると、エクスペリエンスが非...

MySQL 8.0 WITH クエリの詳細

目次MySQL 8 の WITH クエリについて学ぶ1. 例3. 練習するMySQL 8 の WIT...

JSは要素のドラッグとプレースホルダー機能を実装します

このブログ投稿は、ブロガーが数日前に取り組んだプロジェクトで遭遇した困難についてです。これを学んだ後...

vue の v-bind を理解する

目次1. v-bindの主要ソースコードの分析1. v-bind属性はどこに均一に保存されるか: a...

MySQL のロックの仕組みと使用法の分析

この記事では、例を使用して MySQL のロック メカニズムと使用方法を説明します。ご参考までに、詳...

Tomcat マルチポートドメイン名アクセスと gzip 圧縮方式を有効にする構成

1. デフォルトのポート8080に加えて、ドメイン名のアクセスとserver.xmlのオープンにポー...

HTML の marquee 属性の詳細な説明

このタグはHTML3.2の一部ではなく、MSIE3以降のカーネルでのみサポートされているため、IEカ...

Vue コンポーネント化の一般的な方法: コンポーネント値の転送と通信

関連する知識ポイント親コンポーネントから子コンポーネントに値を渡す子コンポーネントから親コンポーネン...

W3C チュートリアル (5): W3C XML アクティビティ

XML は、データを記述、保存、送信、交換するために設計されています。 XML 1.0 は XML ...