ユーザ用ツール

サイト用ツール


linux:sftp_server

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
linux:sftp_server [2023/08/15 15:21] mikotolinux:sftp_server [2023/08/20 13:34] (現在) mikoto
行 2: 行 2:
 [[:linux|一つ上へ]] [[:linux|一つ上へ]]
  
-まず、ユーザーを作成+===== 概要 ===== 
 +sftp-userというユーザーを作成し''/sftp/chroot/home/sftp-user''というディレクトリ内のみ 
 +アクセス可能でログイン不可能の設定でSFTPサーバーを構築する。 
 + 
 +===== 手順 ===== 
 +bashログイン不可能なユーザーを作成。ディレクトリを''/sftp/chroot/home/sftp-user''とする。
 <code bash> <code bash>
-useradd sftp-user+useradd -m -d /sftp/chroot/home/sftp-user -s /sbin/nologin sftp-user
 </code> </code>
 +ディレクトリが作成されなかった場合は作成する。
 +SFTPユーザーのルートディレクトリとする際、所有者をrootにしておかないとログインできないため、
 +所有者とグループを''root:sftp-user''としておく。
 +更に、このディレクトリの中に、書き込み可能なディレクトリを用意しておく。
 +こちらは所有者とグループを''sftp-user:sftp-user''に設定し、
 +パーミッションは700としておく。
 +<code bash>
 +mkdir -p /sftp/chroot/home/sftp-user
 +chown root:sftp-user /sftp/chroot/home/sftp-user
 +chmod 755 /sftp/chroot/home/sftp-user
 +mkdir /sftp/chroot/home/sftp-user/writable
 +chown sftp-user:sftp-user /sftp/chroot/home/sftp-user/writable
 +chmod 700 sftp-user:sftp-user /sftp/chroot/home/sftp-user/writable
 +</code>
 +ここで、ホームディレクトリ自体は750としてしまっても良い。その方が他のユーザーから読み取られる心配は少なくなる。
  
-鍵を作成してユーザーの''.ssh''ディレクトリに配置する。+鍵を作成する。
 <code bash> <code bash>
 ssh-keygen -t rsa 4096 ssh-keygen -t rsa 4096
 +# 名前はsftp-keyで作成、パスフレーズは無しにする
 +</code>
 +
 +鍵を格納するためのディレクトリを作成し、公開鍵の内容を貼り付けて保存する。
 +authorized_keysファイルは、ユーザーが参照できるように所有権を設定しておく。
 +<code bash>
 +mkdir -p /sftp/chroot/sshkeys/sftp-user
 +vim /sftp/chroot/sshkeys/sftp-user/authorized_keys
 +chown sftp-user:sftp-user authorized_keys
 +chmod 600 authorized_keys
 +</code>
 +
 +==== SFTP で操作できるディレクトリを制限する ====
 +ユーザーが操作できるディレクトリを制限したいので、sshd_config を編集して以下を追加する。
 +''%u''はユーザー名を表す。
 +<file>
 +# User Configuration
 +Match User sftp-user
 +ChrootDirectory /sftp/chroot/home/%u
 +AuthorizedKeysFile /sftp/chroot/sshkeys/%u/authorized_keys
 +ForceCommand internal-sftp
 +X11Forwarding no
 +AllowTcpForwarding no
 +PasswordAuthentication no
 +</file>
 +ここでは、** ForceCommand ** ディレクティブにinternal-sftp を指定することでsftpでの接続のみに制限している。
 +
 +変更後、サービスを再起動して反映する。
 +<code bash>
 +systemctl restart sshd
 +</code>
 +
 +==== 構成例2-Chrootなし、パスワード認証での設定 ====
 +通常のユーザーのホームディレクトリをルートディレクトリとし、パスワード認証で接続するよう設定する。
 +また、ルートディレクトリ直下で読み書き可能とする。
 +
 +ユーザーを作成し、パスワードを設定
 +<code bash>
 +useradd -s /usr/sbin/nologin sftp-pass
 +passwd sftp-pass
 +</code>
 +
 +sshd_configを編集し、以下を追加
 +<file apache>
 +Match User sftp-pass
 +  ForceCommand internal-sftp
 +  X11Forwarding no
 +  AllowTcpForwarding no
 +</file>
 +
 +sshd を再起動する
 +<code bash>
 +systemctl restart sshd
 +</code>
 +
 +ユーザーのホームディレクトリの所有者をrootに変更し、
 +パーミッションを775にする。
 +<code bash>
 +chown root: /home/sftp-pass
 +chmod 775 /home/sftp-pass
 </code> </code>
linux/sftp_server.1692080483.txt.gz · 最終更新: 2023/08/15 15:21 by mikoto