Ubuntu 18.04でシェルアクセスなしでSSHファイル転送プロトコル(SFTP)を構成する方法

前書き

SSHファイル転送プロトコル(SFTP)は、セキュアシェル(SSH)機能の完全な認証とセキュリティを活用する、安全で堅牢なファイル転送プロトコルです。高度な機能を提供するが、設定が簡単で、信頼性が高く、より安全であるため、レガシーFTPおよびFTP / Sプロトコルの最良の代替案の1つ.


SFTPは、暗号化および暗号化ハッシュ関数を使用してデータの整合性を保護します。さらに、中間者攻撃やパスワードスニッフィングから保護するその機能は、他の追随を許しません。.

このプロトコルには多くの利点がありますが、SSHアクセスがアクティブになっているサーバーには追加の構成はありません。デフォルトでは、SSHサーバーはシステムのアカウントを持つユーザーにターミナルシェルアクセスとファイル転送アクセスを許可するため、これは大きな障害です。.

ただし、場合によっては、SSHアクセスを制限しながら、一部のユーザーにファイル転送アクセスを与えることが常に重要です。このガイドでは、単一のディレクトリへのSFTPアクセスを禁止し、ユーザーごとにSSHアクセスを制限するSSHデーモンを構成する方法を示します.

準備はいい?行こう!

前提条件

このプロセスを円滑に実行するには、以下が必要です。

  • Ubuntu 18.04 VPSまたは専用サーバー
  • sudo権限を持つユーザー(非root)
  • ファイアウォールが有効

ステップ1-ユーザーの構成

チュートリアルの最初のステップは、ファイル転送権限を与える予定の新しいユーザーを作成することです。私たちのケースでは、 hostadvicefiles ユーザー名として;別のユーザー名を自由に使用してください。以下のコマンドを実行してユーザーを作成します。

$ sudo adduser hostadvicefiles

上記のコマンドを実行すると、このアカウントの新しいパスワードを入力するように求められます。また、ユーザーに関する追加情報を提供するよう求められます。ユーザー名情報を提供する必要はありません。オプションです。ユーザー名の詳細を伝えたくない場合は、単に 入る.

これで、新しいユーザーを作成しました。これで、ファイル転送ディレクトリを作成して、特権を構成できます。.

ステップ2-ファイル転送ディレクトリの作成

ディレクトリへのSFTPファイルアクセスを正常に制限するには、ディレクトリがSSHサーバーのすべての権限要件に準拠している必要があります。特に、そのようなディレクトリと、ファイルシステム構造内のその上にある他のフォルダーは、ルートに属している必要があり、ルートによってのみ書き込み可能である必要があります。ホームディレクトリはルートではなくユーザーに属しているため、ホームディレクトリへのアクセスを制限できないことにも注意してください。.

所有権の問題を回避するために、新しいディレクトリを作成します / var / sftp / uploads 中央のアップロードディレクトリとして使用します。の / var / sftp ルートに属し、どのユーザーもこのファイルを編集する権限を持ちません。手順1で作成したユーザー(hostadvicefiles)サブディレクトリを所有します / var / sftp / uploads, このフォルダにファイルを移動する権限があります.

まず、次のコマンドを実行して新しいディレクトリを作成します。

$ sudo mkdir -p / var / sftp / uploads

次に、以下のコマンドを実行して、ルートを / var / sftp オーナー:

$ sudo chown root:root / var / sftp

ここで、/ var / sftpにroot書き込み権限を付与し、他のユーザーに実行と書き込みのみを許可する必要があります。.

$ sudo chmod 755 / var / sftp

以下のコマンドを実行して、ユーザー(hostadvicefiles)に/ var / sftp / uploadsへの所有権を付与します。

$ sudo chown sammyfiles:sammyfiles / var / sftp / uploads

それだ!ディレクトリの構造が設定され、次のステップに進むことができます.

手順3-SSHサーバー構成の変更

ここでは、SSH(Secure Shell)サーバーの構成設定を変更して、ファイル転送アクセスを許可し、ユーザー(hostadvicefile)のターミナルアクセスを制限します.

まず、以下のコマンドを実行して、SSHサーバーの構成ファイルを開きます。

$ sudo nano / etc / ssh / sshd_config

このファイルの最後に、次のスニペットを追加します。

MatchUserhostadvicefiles
ForceCommandinternal-sftp
PasswordAuthenticationyes
ChrootDirectory / var / sftp
PermitTunnelno
AllowAgentForwardingno
AllowTcpForwardingno
X11Forwardingno

このファイルを保存して終了します.

上記の構成スニペットの各部分の説明は次のとおりです。

  • ユーザーと一致: これは、SSHサーバーにコマンドを厳密にhostadvicefilesに実装するように指示します
  • ForceCommand internal-sftp:この部分は、SSHにログイン中にSFTPサーバーを起動してシェルアクセスを禁止するようにコマンドを出します.
  • PasswordAuthenticationはい:ユーザーにパスワードの確認を求めます
  • ChrootDirectory / var / sftp /:  ユーザーがディレクトリ以外にアクセスしないようにするために使用されます。 / var / sftp
  • 最後の3つの部分は、ポート転送、トンネリング、およびX11転送をこの順序で無効にします.

上記の一連のコマンドは、他のユーザーにも複製できます。関心のあるユーザーのユーザー名と一致するようにユーザー名を変更するだけです.

これで、以下のコマンドを実行してSSHサーバーを再起動し、構成に加えられたすべての変更を実装できます。

$ sudo systemctl restart sshd

ステップ4-構成の認証

次に、ユーザーがファイルを移動するだけの権限を持っていることを確認する必要があります。標準のシェルアクセスを介してhostadvicefilesとしてサーバーにログインします。

$ ssh hostadvicefiles @ localhost

元のプロンプトに戻る前に、以下のエラーメッセージが表示されます。

このサービスはsftp接続のみを許可します.
ローカルホストへの接続が閉じられました.

これは、ユーザー(hostadvicefiles)がSSHを使用してシェルサーバーにログインできないことを示しています。次に、以下のコマンドを実行して、hostadvicefilesがSFTPにアクセスできるかどうかを確認します。

$ sftp hostadvicefiles @ localhost

すべて問題なければ、以下のメッセージが表示されます。

ローカルホストに接続しました.
sftp>

SFTPプロンプトで次のコマンドを実行して、すべてのディレクトリの内容を確認します。

sftp> ls

これにより、ステップ2で作成されたアップロードディレクトリを示す出力が表示されます。.

アップロード

すぐ上のディレクトリに移動してみてください。

sftp>CD ..

コマンドは変更を提供しません。これは、listingコマンドによって出力されたすべてのディレクトリー・ファイルをリストします。つまり、hostadvicefilesは親ディレクトリに切り替えることができません。これは、構成が成功したことを示し、ユーザー(hostadvicefiles)がSFTPファイル転送プロトコルを介してサーバーにのみログインすることを許可します.

結論

それだ! SSHファイル転送プロトコルを正常に構成し、ユーザーが完全なシェルアクセスなしで1つのディレクトリにアクセスできるようにしました。この構成を多数のユーザーに複製する場合は、ユーザーごとにプロセスを繰り返します.

これらの上位3つのLinuxホスティングサービスを確認する

FastComet

開始価格:
$ 2.95


信頼性
9.7


価格
9.5


使いやすい
9.7


サポート
9.7


特徴
9.6

レビューを読む

FastCometにアクセス

Hostinger

開始価格:
$ 0.99


信頼性
9.3


価格
9.3


使いやすい
9.4


サポート
9.4


特徴
9.2

レビューを読む

Hostingerにアクセス

ChemiCloud

開始価格:
$ 2.76


信頼性
10


価格
9.9


使いやすい
9.9


サポート
10


特徴
9.9

レビューを読む

ChemiCloudにアクセス

関連するハウツー記事

  • Ubuntu 18.04 VPSまたは専用サーバーにArkサーバーをインストールする方法
    専門家
  • Ubuntu 18.04サーバーにMosquitto MQTTをインストールして構成する方法?
    中間
  • Apache WebルートをUbuntu 18.04 VPSまたは専用サーバー上の別のディレクトリに変更する方法
    中間
  • Ubuntu 18.04にphpIPAMをインストールする方法
    中間
  • Ubuntu 18.04サーバーでバニラフォーラムをセットアップする方法
    中間
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me