LoginSignup
2
6

More than 3 years have passed since last update.

linuxサーバーでsftpを使って任意のディレクトリだけのファイル転送をする

Last updated at Posted at 2019-07-01

はじめに

クライアント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についてはググればいくらでも情報はあったが、
個人的にわかりやすいものがなかったため、
今回まとめてみた

こういった枯れた技術もまだまだ役に立つ場面が出てくるため、
使えて損はないと感じた

2
6
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
2
6