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

Ubuntu18.04でMySecureShellSFTPサーバーをセットアップする方法

この記事では、Ubuntu18.04でMySecureShellを使用してSFTPサーバーをセットアップする方法について説明します。 SFTPは、暗号化されたSSH接続を使用してファイルを転送する安全な方法です。最新のFTPクライアントで広くサポートされていますが、FTP(ファイル転送プロトコル)とはまったく異なるプロトコルです。

従来のFTPサーバーの代わりにMySecureShellを使用する理由を尋ねられるかもしれません。ここにいくつかの機能があります

  • SSHを使用した安全なデータ転送
  • SSL証明書を管理する必要はありません
  • インストールと構成が簡単
  • 帯域幅の使用を制限する
  • ファイルとフォルダの制限
  • IP/ユーザー名/グループ/仮想ホストを使用したアクセス制御リスト
  • ユーザーをsftpのみに制限します(シェルアクセスはデフォルトで無効になっています)
  • 強化されたロギングシステム

したがって、最初にインストールから始めましょう。このチュートリアルを理解するには、FTPの基本的な知識で十分です。

インストール

ubuntu 15.04以降では、デフォルトのリポジトリでMySecureShellを使用できます。このインストールにはubuntu18.04を使用しています。以下のコマンドを実行して、MySecureShellをインストールします。

apt-get install mysecureshell

利用できない場合は、次の手順に従ってください。次のすべての手順がrootユーザーとして実行されていることを確認してください。

vim /etc/apt/sources.list

次の2行を追加します

deb http://mysecureshell.free.fr/repository/index.php/ubuntu testing main
deb-src http://mysecureshell.free.fr/repository/index.php/ubuntu testing main

次に、gpgキーを次のように追加します

gpg --keyserver hkp://pool.sks-keyservers.net --recv-keys E328F22B; gpg --export E328F22B | apt-key add
gpg: keybox '/root/.gnupg/pubring.kbx' created
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: key 7601D76CE328F22B: public key "MySecureShell repository " imported
gpg: Total number processed: 1
gpg:           	imported: 1
OK

リポジトリが追加されたら、インストールを開始できます

apt-get update
apt-get install mysecureshell

これで、サービスを開始してステータスを確認できます

systemctl start mysecureshell.service
systemctl status mysecureshell.service

サンプル出力

# systemctl start mysecureshell.service
root@li1004-153:~# systemctl status mysecureshell.service
* mysecureshell.service - LSB: MySecureShell SFTP Server
   Loaded: loaded (/etc/init.d/mysecureshell; generated)
   Active: active (exited) since Fri 2018-05-18 01:02:17 UTC; 4min 44s ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 0 (limit: 2322)
   CGroup: /system.slice/mysecureshell.service

May 18 01:02:17 004-153 systemd[1]: Starting LSB: MySecureShell SFTP Server...
May 18 01:02:17 004-153 mysecureshell[1314]: Starting MySecureShell SFTP Server: mysecureshell is now online with restricted features
May 18 01:02:17 004-153 mysecureshell[1314]: Note: To enable all features you have to change mysecureshell binary rights to 4755
May 18 01:02:17 004-153 systemd[1]: Started LSB: MySecureShell SFTP Server.

# systemctl status mysecureshell.service
* mysecureshell.service - LSB: MySecureShell SFTP Server
   Loaded: loaded (/etc/init.d/mysecureshell; generated)
   Active: active (exited) since Fri 2018-05-18 01:02:17 UTC; 50min ago
     Docs: man:systemd-sysv-generator(8)
    Tasks: 0 (limit: 2322)
   CGroup: /system.slice/mysecureshell.service

May 18 01:02:17 004-153 systemd[1]: Starting LSB: MySecureShell SFTP Server...
May 18 01:02:17 004-153 mysecureshell[1314]: Starting MySecureShell SFTP Server: mysecureshell is now online with restricted features
May 18 01:02:17 004-153 mysecureshell[1314]: Note: To enable all features you have to change mysecureshell binary rights to 4755
May 18 01:02:17 004-153 systemd[1]: Started LSB: MySecureShell SFTP Server.
#

以下のコマンドを使用して、mysecureshellサービスを停止および再起動します

systemctl stop mysecureshell.service
systemctl restart mysecureshell.service

MySecureShellSFTPユーザーの作成

まず、MySecureShellのインストール場所を見つける必要があります

whereis mysecureshell

以下の出力にあるように、mysecureshellのインストールパスは/ usr / bin/mysecureshellです。

mysecureshell: /usr/bin/mysecureshell /usr/share/man/man8/mysecureshell.8.gz

次に、パスを確認した後、ユーザーを作成します

useradd -m -s /usr/bin/mysecureshell testsftpuser
passwd testsftpuser

上記のコマンドでわかるように、ユーザーを作成し、mysecureshellの場所のパスを割り当てています。また、次のコマンドを使用して、既存のユーザーにMySecureShellへのアクセスと使用を割り当てることができます。

sudo usermod -s /usr/bin/mysecureshell testsftpuser

ユーザー接続

これで、「testsftpuser」ユーザーは、以下に示すように、マシンのIPアドレスを使用してクライアントからSFTPサーバーに接続できます。

sftp [email protected]

マシンのIP

Connected to 45.33.54.153
sftp>

また、クライアントシステムからFileZillaなどのグラフィカルクライアントを使用してSFTPサーバーにログインできます。

MySecureShellコマンド

MySecureShellには、SFTPサーバーを管理するための次の一連のコマンドがあります。

  • sftp-admin
  • sftp-kill
  • sftp-state
  • sftp-user
  • sftp-verif
  • sftp-who

sftp-admin

このコマンドを使用すると、MySecureShellをリモートで管理できます。

sftp-admin [ssh options] user@hostname

sftp-kill

FTPサーバーからユーザーを切断します。

sftp-kill testsftpuser
Kill testsftpuser on PID 1961
(Press "Y" when requested)

sftp-state

FTPサーバーのステータスを表示する

# sftp-state

サンプル出力

# sftp-state
Server is up
#

sftp-user

このコマンドを使用すると、以前に行ったパスを指定せずにSFTPユーザーを作成できます。

sftp-user create test

SFTPユーザーの一覧表示

sftp-user list
test
testsftpuser

コマンドはユーザーテストを削除します

sftp-user delete test

sftp-verif

このコマンドは、MySecureShellサーバーの問題を検証して修正します。

sftp-verif
################################################################################
MySecureShell Verification Tool
################################################################################

### Verifing file existance ###

/bin/MySecureShell                                                       [ OK ]
/bin/sftp-who                                                            [ OK ]
/bin/sftp-kill                                                           [ OK ]
/bin/sftp-state                                                          [ OK ]
/bin/sftp-admin                                                          [ OK ]
/bin/sftp-verif                                                          [ OK ]
/bin/sftp-user                                                           [ OK ]

### Verifing rights ###

Verifing file rights of /etc/ssh/sftp_config                             [ OK ]
Verifing file rights of /bin/sftp-who                                    [ OK ]
Verifing file rights of /bin/sftp-verif                                  [ OK ]
Verifing file rights of /bin/sftp-user                                   [ OK ]
Verifing file rights of /bin/sftp-kill                                   [ OK ]
Verifing file rights of /bin/sftp-state                                  [ OK ]
Verifing file rights of /bin/sftp-admin                                  [ OK ]
Verifing file rights of /bin/MySecureShell                               [ OK ]

### Verifing rotation logs ###
Rotation logs have been found                                            [ OK ]
### Verifing server status ###
Verifing server status (ONLINE)                                          [ OK ]
[...]

sftp-who

このコマンドは、現在FTPサーバーにログインしているユーザーを示します。

sftp-who
# sftp-who
--- 1 / 10 clients ---
Global used bandwidth : 0 bytes/s / 0 bytes/s
PID: 2207   Name: testsftpuser   IP: pa39-178-9-194.pa.nsw.optusnet.com.au
        Home: /home/testsftpuser
        Status: idle    Path: /
        File:
        Connected: 2018/05/18 01:30:50 [since 03mins 59s]
        Speed: Download: 0 bytes/s [5.00 kbytes/s]  Upload: 0 bytes/s [unlimited]
        Total: Download: 924 bytes   Upload: 100 bytes
#

構成

メインのMySecureShell構成ファイルは/etc/ ssh/sftp_configです。構成ファイルで、アップロードとダウンロードの帯域幅、chrootユーザー、接続の最大数などを構成できます。このオプションは、全員または特定のグループのみに設定できます。

cat /etc/ssh/sftp_config

デフォルトタグ

すべてのユーザーに構成を適用する場合は、デフォルトのタグが使用されます

#Default rules for everybody
Default
        GlobalDownload          50k     #total speed download for all clients
                                        # o -> bytes   k -> kilo bytes   m -> mega bytes
        GlobalUpload            0       #total speed download for all clients (0 for unlimited)
        Download                5k      #limit speed download for each connection
        Upload                  0       #unlimit speed upload for each connection
        StayAtHome              true    #limit client to his home
        VirtualChroot           true    #fake a chroot to the home account
        LimitConnection         10      #max connection for the server sftp
        LimitConnectionByUser   1       #max connection for the account
        LimitConnectionByIP     2       #max connection by ip for the account
        Home                    /home/$USER     #overrite home of the user but if you want you can use
                                                #       environment variable (ie: Home /home/$USER)
        IdleTimeOut             5m      #(in second) deconnect client is idle too long time
        ResolveIP               true    #resolve ip to dns
        LogFile         /var/log/sftp-server_ftp.log
#       IgnoreHidden            true    #treat all hidden files as if they don't exist
#       DirFakeUser             true    #Hide real file/directory owner (just change displayed permissions)
#       DirFakeGroup            true    #Hide real file/directory group (just change displayed permissions)
#       DirFakeMode             0400    #Hide real file/directory rights (just change displayed permissions)
                                        #Add execution right for directory if read right is set
        HideNoAccess            true    #Hide file/directory which user has no access
#       MaxOpenFilesForUser     20      #limit user to open x files on same time
#       MaxWriteFilesForUser    10      #limit user to x upload on same time
#       MaxReadFilesForUser     10      #limit user to x download on same time
        DefaultRights           0640 0750       #Set default rights for new file and new directory
#       MinimumRights           0400 0700       #Set minimum rights for files and dirs

        ShowLinksAsLinks        false   #show links as their destinations
#       ConnectionMaxLife       1d      #limits connection lifetime to 1 day

#       Charset                 "ISO-8859-15"   #set charset of computer

Default

注: ログはデフォルトでは有効になっていません。設定ファイルでログファイルの場所を定義できます。

FileSpecタグ

FileSpecタグは、ファイルとディレクトリにフィルタを作成するために作成されています。

    # Only check against filenames/folder names only
FileSpec
    UseFullPath false

    # we can use multiple deny/allow directives for clarity
    Order DenyAllow
    Deny ".*.exe$"
    Deny ".*.sh$"
    Allow all
FileSpec

ユーザータグ
ユーザータグは、特定のユーザーのホームフォルダを定義します

User tom 
Home /home/tom 
User

VirtualHostタグ

VirtualHostタグは、仮想ホスト名に基づいて制限を設定できます

    # Set home directory for this virtualhost
VirtualHost
    Home                    /var/www/html/www.mysftpsite.com
    # Set dedicated log file
    LogFile                 /var/log/sftp/www.mysftpsite.com
    # Override the maximum number of connection per user
    LimitConnectionByUser   5
VirtualHost

gFTPのインストール

それでは、Ubuntu18.04にgFTPをインストールしてみましょう。以下の手順に従ってください。

sudo apt-get install gftp
  • アプリケーションからgFTPを開く
  • SFTPサーバーのIPアドレス、ポート番号(デフォルト/サーバー構成時に指定)、ユーザー名、パスワードを入力し、SSH2を使用します。 Enterキーを押してログインします
  • ログイン試行が成功した場合。 gFTPを使用してSFTPに接続しています

それは今のところすべてです。この段階で、SFTPサーバーが機能するようになります。このチュートリアルが気に入っていただければ幸いです。自己学習のためにいくつかの構成部分を残しました。Linoxideコミュニティが学習して成長するのに役立つ、自分で行った構成についてコメントしてください。ありがとうございます。


Ubuntu
  1. Ubuntu18.04LTSでRsyslogサーバーをセットアップする方法

  2. Ubuntu16でZimbraメールサーバーをセットアップする方法

  3. UbuntuとLinuxMintでNTPサーバーをセットアップする方法

  1. Ubuntu 20.04 FocalFossaLinuxでSFTPサーバーをセットアップする方法

  2. Ubuntu20.04でOpenVPNサーバーをセットアップする方法

  3. Ubuntu 20.04でRsyslogサーバーをセットアップする-その方法は?

  1. Ubuntu22.04でSFTPサーバーをセットアップする方法JammyJellyfishLinux

  2. Ubuntu20.04でVSFTPDを使用してFTPサーバーをセットアップする方法

  3. Ubuntu18.04でVSFTPDを使用してFTPサーバーをセットアップする方法