概要
特定のユーザーでのみSFTP接続可能にする設定する必要があったので実施してみた。
備忘がてら、流れをメモする。
前提
Webサーバー(今回はさくらインターネットの専用サーバーを使用)
vsftpがインストールされている
SSHでアクセスできる環境
手順
1.サーバー側でユーザーの設定
SSHでアクセスし、ユーザーを作成する
$ ssh -i {key情報} sample@xxx.xxx.xxx.xxx -p xx
Last login: xxxxx from xxxx.jp
SAKURA Internet [Virtual Private Server SERVICE]
# 管理者権限に昇格
[sample@xxxx ~]$ sudo su
[sudo] password for sample:
# test_userを追加
[root@xxxx sample]# useradd -s /sbin/nologin -d /home/test_user test_user
# パスワード設定
[root@xxxx sample]# passwd test_user
ユーザー test_user のパスワードを変更。
新しいパスワード:
新しいパスワードを再入力してください:
passwd: 全ての認証トークンが正しく更新できました。
# ユーザーが作成されているか確認
[root@xxxx sample]# /home/
sample/ test_user/
# ディレクトリのパーミッションを設定
[root@xxxx sample]# chmod 755 /home/test_user
# パーミッションの確認
[root@xxxx sample]# cd /home/
[root@xxxx home]# ls -la
合計 xx
drwxr-xr-x. 7 root root 4096 6月 20 09:20 2021 .
dr-xr-xr-x. 22 sample sample 4096 8月 7 11:01 2019 ..
drwxr-xr-x 2 test_user test_user 4096 6月 20 09:20 2021 test_user
2.sshd_configでSFTP設定
PasswordAuthentication yesにして、SFTPユーザーのみパスワード認証を許可する。
/etc/ssh/sshd_config
:
:
# Subsystem sftp /usr/libexec/openssh/sftp-server ← コメントアウトする
Subsystem sftp internal-sftp
Match User test_user
ChrootDirectory /home
PasswordAuthentication yes
X11Forwarding no
AllowTcpForwarding no
設定が完了したら、設定情報のチェックをする
[root@xxxx home]# sshd -t
問題がなければsshdを再起動する。
[root@xxxx home]# /etc/rc.d/init.d/sshd restart
sshd を停止中: [ OK ]
sshd を起動中: [ OK ]
3.SFTPクライアントから接続する
今回はFileZillaを使用してSFTP設定をする。
接続確認
- プロトコル:SFTP
- ホスト:サーバーのIPアドレス
- ポート:SSH接続ポート
- ログオンタイプ:通常
- ユーザー:手順1で作成したユーザー:test_user
- ユーザー:手順1で作成したパスワード:*****

接続ログ

接続完了
これで一旦接続完了した。
その他
グループを使った指定方法
今回はユーザー指定でSFTP設定をしたが、複数のアカウントでSFTP接続できるようにしたい場合は、sshd_configに設定をすれば可能みたい。
Match Group {グループ名}
ChrootDirectory /home
PasswordAuthentication yes
X11Forwarding no
AllowTcpForwarding no
特定ユーザーをグループに設定すればよさそう。
[root@xxxx home]# usermod -G {グループ名} {ユーザー名}
アクセス制限
ホームフォルダはroot所有にしているため、ファイルのダウンロードはできてもファイルのアップロードはできない。
これは、userフォルダのroot所有にすると、userフォルダ直下にファイルを置くことが原因らしい。
さいごに
個人的にセキュリティ面が気になるが、今回の操作でOS周りの設定に関して少し知識が蓄積された気がする。
参考URL