ユーザ用ツール

サイト用ツール


linux:sftp_server

差分

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

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
linux:sftp_server [2023/08/15 16:16] mikotolinux:sftp_server [2023/08/20 13:34] (現在) mikoto
行 7: 行 7:
  
 ===== 手順 ===== ===== 手順 =====
-まず、ユーザーを作成+bashログイン不可能なユーザーを作成。ディレクトリを''/sftp/chroot/home/sftp-user''とする。
 <code bash> <code bash>
-useradd -m -/bin/false /sftp-user+useradd -m -/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
行 18: 行 33:
 </code> </code>
  
-chroot 用のディレクトリを作成する+鍵を格納するためのディレクトリを作成し、公開鍵の内容を貼り付けて保存する。 
 +authorized_keysファイルは、ユーザーが参照できるように所有権を設定しておく。
 <code bash> <code bash>
-mkdir -p /sftp/chroot/home/sftp-user +mkdir -p /sftp/chroot/sshkeys/sftp-user 
-chown root:root /sftp/chroot +vim /sftp/chroot/sshkeys/sftp-user/authorized_keys 
-chmod 755 /sftp/chroot/ +chown sftp-user:sftp-user authorized_keys 
-chown sftp-user:sftp-user /sftp/chroot/home/sftp-user+chmod 600 authorized_keys
 </code> </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> <code bash>
-ssh-copy-id -i ~/.ssh/sftp-key_.pub sftp-user@<host_ip_address>+systemctl restart sshd
 </code> </code>
-あるいは内容を表示して配置する。 
  
-===== SFTP 操作るディレクトリを制限する =====+==== 構成例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>
linux/sftp_server.1692083765.txt.gz · 最終更新: 2023/08/15 16:16 by mikoto