Skip to content

Instantly share code, notes, and snippets.

@t-okkn
Last active November 22, 2020 08:52
Show Gist options
  • Save t-okkn/a6b44a007d21569c9ade502ff280edc5 to your computer and use it in GitHub Desktop.
Save t-okkn/a6b44a007d21569c9ade502ff280edc5 to your computer and use it in GitHub Desktop.
chrootユーザーを作成してサーバにSFTPを許可する手順

chrootユーザーを作成してサーバにSFTPを許可する手順

■前提

OSの環境はArch Linuxにて確認しております。
※「{{ }}」にて囲まれている部分は変数を表します(Jinja2などのテンプレートエンジンでもレンダリング可能なようにしてあります)。

■chrootユーザーを作成

  1. chroot用のグループ作成と確認

    $ sudo groupadd chroot
    $ less /etc/group
    
  2. ルート直下にchrootフォルダを作成

    $ sudo mkdir /chroot
    $ ls /
    
  3. chrootユーザーを作成

    $ sudo mkdir -p /chroot/home/{{ Username }}
    $ sudo useradd -g chroot -b /chroot/home -s /bin/bash {{ Username }}
    $ sudo passwd {{ Username }}
    $ sudo chown -R root:root /chroot/home/{{ Username }}
    $ sudo chmod -R 755 /chroot/home/{{ Username }}
    $ sudo mkdir /chroot/home/{{ Username }}/files
    $ sudo chown -R {{ Username }}:chroot /chroot/home/{{ Username }}/files
    $ sudo chmod -R 755 /chroot/home/{{ Username }}/files        
    

■SSHの設定

  1. sshd_config に設定を追記

    $ sudo vi /etc/ssh/sshd_config
    (最下段に追記)
    ==========
    Match Group chroot
        ForceCommand internal-sftp
        AllowAgentForwarding no
        AllowTcpForwarding no
        ChrootDirectory /chroot/home/%u/
    ==========
    
    $ sshd -t
    $ sudo service ssh restart
    
  2. 公開鍵と秘密鍵の作成

    $ cd /chroot/home/{{ Username }}
    $ sudo mkdir /chroot/home/{{ Username }}/.ssh
    $ sudo ssh-keygen -t ed25519 -C "{{ Comment }}"
    ==========
    Enter file in which to save the key (/root/.ssh/id_ecdsa): /chroot/home/{{ Username }}/.ssh/authorized_keys
    ==========
    
    $ sudo chown -R {{ Username }}:chroot /chroot/home/{{ Username }}/.ssh
    $ sudo chmod 700 /chroot/home/{{ Username }}/.ssh
    $ sudo mv ./.ssh/authorized_keys ./
    $ sudo mv ./.ssh/authorized_keys.pub ./.ssh/authorized_keys
    $ sudo chmod 600 ./.ssh/authorized_keys
    $ sudo ls -al ./.ssh
    
  3. 秘密鍵をローカルへ転送
    移動方法は割愛

  4. 接続試験

    • ログイン試験
    • ファイルの新規作成・削除
    • ルートの確認
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment