0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

CentOS8にSFTP接続できるようにする

Last updated at Posted at 2019-12-06

まえがき

SFTP接続できるサーバを構築する機会があったのでそのときにやったことを書いておきます。

環境

OS CentOS 8.0.1905 64bit
webサーバ Apache/2.4.37
OpenSSH OpenSSH_7.8p1
クラウド さくらクラウド

前提

  • ApacheまたはNginxなどのwebサーバをインストール済み。
  • ドキュメントルートは/var/www/vhostsとする

新規ユーザ作成

SFTP接続専用のユーザを作成します

管理ユーザになる

sudo su -

ユーザ作成

useradd sftp-user

パスワードを設定

passwd sftp-user

SFTPユーザのグループ指定

SFTP専用ユーザーをApacheのグループに追加します。

Apacheユーザを確認

 id apache
 uid=48(apache) gid=48(apache) groups=48(apache)

SFTP専用ユーザをグループに追加

usermod -g 48 sftp-user

グループIDを確認

id sftp-user
uid=1001(sftp-user) gid=48(apache) groups=48(apache)

ssh鍵設定

SFTPで接続するための鍵を作成する。

sftp-userのホームディレクトリに移動

cd /home/sftp-user

.sshディレクトリを権限700に指定して作成

mkdir -pm 700 .ssh

所有者をsftp-userに変更

sudo chown sftp-user:sftp-user .ssh

sftp-userにログイン

su - sftp-user

.sshに移動

cd .ssh

鍵を作成

ssh-keygen -t rsa -b 4096

生成された鍵ファイルを確認

$ ls -la
合計 20
drwxr-xr-x 2 sftp-user sample-sftp 4096 12月  4 22:43 .
drwxr-xr-x 3 root        root        4096 12月  4 22:37 ..
-rw------- 1 sftp-user nginx       3247 12月  4 22:40 id_rsa
-rw-r--r-- 1 sftp-user nginx        754 12月  4 22:40
id_rsa.pub

id_rsa.pubをauthorized_keysというファイルに転記する。

cat id_rsa.pub
vi authorized_keys

authorized_keysの権限を変更

chmod 600 authorized_keys

最終的にこうなっていればOK

$ ls -la
drwx------ 2 sftp-user sample-sftp 4096 12月  4 22:43 .
drwxr-xr-x 3 root        root        4096 12月  4 22:37 ..
-rw------- 1 sftp-user nginx        754 12月  4 22:43 authorized_keys
-rw------- 1 sftp-user nginx       3247 12月  4 22:40 id_rsa
-rw-r--r-- 1 sftp-user nginx        754 12月  4 22:40 id_rsa.pub

sftp-userからexit

exit

SFTPできるディレクトリを制限

SFTPアカウントで接続した際、ルートからなんでも見れて更新できては何かと困るので制限をかける。

.sshディレクトリに移動

cd /etc/ssh

バックアップを作成

cp -p sshd_config sshd_org_config

ユーザの制限事項を追加

vi sshd_config
#sshd_configの一番下に追加
Match group apache
  ChrootDirectory /var/www/
  ForceCommand internal-sftp -u 0002

ログインするディレクトリの所有者をrootにする

chown root:root /var/www

vhost以下の所有者を全てapacheにする

chown -R nginx:nginx /var/www/vhosts

vhosts以下のファイルの権限を664にする

#カレントディレクトリ以下全てに適用
find ./ -type f -exec chmod 664 {} \; 

vhosts以下のディレクトリの権限を775にする

find ./ -type d -exec chmod 775 {} \;

トラブルシューティング

  • アップロードできない

アップロードするディレクトリは権限と所有者を以下の権限にする。それでもできない場合はログインするディレクトリにアップロードしようとしてないか確認する。ログインするディレクトリはrootの権限なのでアップロードできないです

権限: 775
所有者: apche(webサーバの実行ユーザ)
  • ログインできない

SFTPでログインするディレクトリは所有者と権限を以下に変更する

権限: 755
所有者: root:root
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?