はじめに
クライアントPCとかで、linuxサーバーにあるファイルをやり取りしたいとなった時、
だいたいの場合はターミナルソフト入れて、sshで繋いで、みたいな流れになると思うが、
もろもろの事情により、限定したディレクトリ以下のファイルだけしか見れないようにしたいとき、
SFTPが役に立つ
linuxサーバー側の設定としてはおおまかに、
SFTP接続用ユーザーを作成し、
編集可能なディレクトリを指定するというものだけ
一回やったら30分くらいでできるようになる
セキュリティを上げたい場合は接続用鍵を作成してもいいが、
なくてもSFTP接続はできる
枯れたレガシー技術だけど、
とっさの時に使えるため、
自分のメモ用に残す
手順
ユーザー・グループ作成
最初に接続用ユーザー作成
useradd SFTPuser
passwd SFTPuser
SFTP接続できるグループも作成する
groupadd sftp
usermod -G sftp SFTPuser
SFTPで繋げたいディレクトリを作成
mkdir /test
mkdir /test/hoge
ssh接続設定
vi /etc/ssh/sshd_config
元々書かれている下記をコメントアウト
# Subsystem sftp /usr/libexec/openssh/sftp-server
以下を追記
Subsystem sftp internal-sftp
Match User SFTPuser
ChrootDirectory /test #SFTPで繋げたいディレクトリを指定
ForceCommand internal-sftp
接続用のカギを作成(この項目はセキュリティ要求レベルによってしなくてもOK)
su SFTPuser
ssh-keygen -t rsa
cp /home/SFTPuser/.ssh/id_rsa.pub /home/SFTPuser/.ssh/authorized_keys
作成した秘密鍵「id_rsa」はローカルに保存しておこう
SFTP接続用ディレクトリの確認
以下の権限状態となっていることを確認
権限が異なるとSFTPで接続できないエラーとなる場合がある
ls -la /
drwxr-xr-x 4 root root 4096 6月 4 18:38 2019 test
ls -la /test/
drwxrwxrwx 4 SFTPuser SFTPuser 4096 6月 4 19:01 2019 hoge
sshdの適用
sshの設定が間違っていないかテスト
sshd –t
上記コマンドでエラーが出なければ再起動
service sshd restart
接続確認
windowsクライアントの場合はWinscpなどで作成したユーザー、パスワード、鍵を使い、接続確認する
接続後に、/test以下のディレクトリのみが見えていれば完了
まとめ
SFTPについてはググればいくらでも情報はあったが、
個人的にわかりやすいものがなかったため、
今回まとめてみた
こういった枯れた技術もまだまだ役に立つ場面が出てくるため、
使えて損はないと感じた