GNU/Linux >> Linux の 問題 >  >> Linux

LinuxベースのシステムでSFTPユーザーを設定する

この記事では、ホームディレクトリに制限または投獄されているセキュアなSSHファイル転送プロトコル(SFTP)ユーザーを作成する方法を説明します。

警告 :rootユーザーを投獄しようとしないでください。 rootユーザーが正しく操作を実行できなくなることがないように、追加のユーザーのみを投獄します。

始める前に、次のベストプラクティスを確認してください。

  • SFTPユーザーのホームディレクトリは、root:rootが所有している必要があります 。他のディレクトリは、ユーザーが所有(および書き込み可能)できます(また、書き込み可能である必要があります)。

  • chrootユーザーが指定されたDocumentRootへの書き込みアクセス権を持っていることを確認することが重要です。

  • ログインして、SFTPユーザーが正しく機能していることをテストすることが重要です。

  • 追加したSFTPユーザーがSFTPグループに追加されていることを確認することが重要です。

  • これらの手順は、単一のドメイン(SFTPユーザー)を追加するためのものですが、複数のドメインを管理するために使用できる可能性があります。

重要 :この記事の手順は、RHEL®7またはCentOS®7では機能しません。適切なchroot操作と同様に、この構成ではchrootディレクトリへの書き込みアクセスは提供されません。 chrootjailのサブディレクトリのみが書き込み可能です。これは、ルート権限がSFTPユーザーが含まれている上位レベルのディレクトリで解釈される方法によるものです。

次の手順を使用して、ホームディレクトリに投獄される安全なSFTPユーザーを作成します。

  1. 次のコマンドを実行して、SFTPアクセスに使用するSFTPグループを追加します。

    groupadd sftponly
    
  2. myuserを置き換えて、次のコマンドを実行してSFTPユーザーを追加します ユーザー名:

    useradd -d /var/www/vhosts/domain.com -s /bin/false -G sftponly myuser
    
  3. myuserを置き換えて次のコマンドを実行し、ユーザーのパスワードを作成します ユーザー名:

    passwd myuser
    
  4. sshd_configを開きます 次のコマンドを実行して、SSHおよびSFTP構成を保持するファイル:

    nano /etc/ssh/sshd_config
    
  5. 次の例に示すように、先頭にハッシュ記号(#)を追加して、次の行をコメント化します。

    #Subsystem sftp /usr/lib/openssh/sftp-server
    
  6. コメントアウトした行のすぐ下に次の行を追加します。

    Subsystem sftp internal-sftp
    
  7. 次のコードをファイルの最後に追加します。

    Match Group sftponly
         ChrootDirectory %h
         X11Forwarding no
         AllowTCPForwarding no
         ForceCommand internal-sftp
    
  8. sshdを実行します コマンドを使用して変更をテストしてから、サービスを再起動します。

    重要 :この手順を正しく実行しないと、SSHD構成が破損する可能性があります。

    sshd -t
    service sshd restart
    
ファイルシステムのファイル権限が正しいことを確認してください

次に、SFTPジェイルが正しく機能するように、ファイルシステムのファイル権限が正しいことを確認する必要があります。

  1. SFTPROOTを確認します ディレクトリ(SSHユーザーを追加したときに設定したホームディレクトリ)には、適切なuser:root group:rootがあります。 次のコマンドを実行して権限を付与します:

    chown root:root /var/www/vhosts/mywebsite.com/
    
  2. SFTPログインが機能することを確認するには、次のコマンドを実行してSFTPに接続し、myuserを置き換えます。 次の例に示すように、選択したユーザーを使用します。

    sftp myuser@localhost
    myuser@localhost's password:
    Connected to localhost.
    
  3. 次のコマンドを実行して、ディレクトリリストをテストします。

    sftp> ls -al
    

    出力は次の例のようになります。

    drwxr-xr-x    3 0        0            4096 Sep 28 08:09 .
    drwxr-xr-x    3 0        0            4096 Sep 28 08:09 ..
    drwxr-xr-x    2 5001     33           4096 Sep 28 08:52 html
    -rw-r--r--    1 0        0               0 Sep 28 08:09 test.php
    

    cdを使用します HTMLディレクトリ(/var/www/vhosts/mywebsite.com/htmlにあります)に移動するコマンド ウェブサイトの「documentroot」はSSHSFTPユーザーのrootの1レベル下にあるためです ディレクトリ。 www-dataのため、この設定を使用する必要があります ユーザー(Webサーバーのユーザー)にはルートuser:groupがあります そのファイルに対する権限。

  4. 次のコマンドを実行して、ファイルをアップロードする機能をテストします。

    sftp> cd html
    sftp> put test.php
    Uploading test.php to /html/test.php
    test.php                                                                                                                                                                                                                                        
    100%    12K     20.0KB/s   00:00
    
  5. 次のコマンドを実行して、ファイルをダウンロードする機能をテストします。

    sftp> get test.php
    Fetching /test.php to test.php
    
  6. 次のコマンドを実行して、現在の作業ディレクトリを表示します。

    sftp> pwd
    
    Remote working directory: /html
    

    SFTPは、/var/www/vhosts/mywebsite.com/内のファイルのみを参照します ディレクトリであり、このディレクトリを最上位のルート('/')ディレクトリと見なします。

  7. 次の手順を使用してSFTPに接続し、SFTPクライアントを設定します。

    1. Cyber​​duck®をインストールします。
    2. Cyber​​duckアプリケーションを開きます。
    3. ウィンドウの上部にある接続を開くのアイコンをクリックします 。
    4. ドロップダウンメニューで、 SFTP(SSHファイル転送プロトコル)を選択します 。
    5. サーバー内 [フィールド]に、サーバーのインターネットプロトコル(IP)アドレスを入力します。
    6. SFTPへの接続に使用するユーザー名とパスワードを入力します。
    7. [接続]をクリックします 。

重要 :ファイルのアクセス許可を変更した後は、必ずWebサイトをテストしてください。


Linux
  1. Linuxでユーザーを一覧表示する-最良の方法

  2. CentOS7でユーザーを一覧表示する方法

  3. 新規ユーザーのデスクトップのデフォルトを設定するには??

  1. 新しいWordPressユーザーを追加します

  2. Linuxでユーザーパスワードを設定または変更する

  3. Debian で SSH キーを設定する方法

  1. Linuxで複数のユーザーアカウントを作成する方法

  2. LinuxユーザーとLinuxグループを管理する

  3. システムユーザーの umask を設定するには?