・ssh接続をさせない
・sftp接続は可能
・サーバ内のとあるディレクトリ配下しか利用させない。閲覧もさせたくない。
・umask 002でファイル配置
・ログインはパスワード(鍵ファイルではない)
・まずはユーザを作成します
adduser sftp-user -g www
(これは通常のユーザと同じにしてあります。そうすることにより、sftp-userが配置したファイルを通常ユーザが利用できる状態になります。(umask 002の設定しているので))
passwd sftp-user
・それでは、実際に今回の要件を満たす設定をしていきます。
修正するファイルは下記のみです。
/etc/ssh/sshd_config
○sshd_config 1カ所目
Subsystem sftpと記載のある箇所をかきの様に書き換えます。
Subsystem sftp /usr/libexec/openssh/sftp-server
↓
Subsystem sftp internal-sftp -u 002
-u 002はumask 002という意味になります。
これで、sftpで作成されたファイルはumask 002の状態となります。
○sshd_config 2カ所目
ファイルの最終行に下記を追加してください。
Match User sftp-user
PasswordAuthentication yes
PubkeyAuthentication no
RSAAuthentication no
ChrootDirectory /home/neostage
ForceCommand internal-sftp -u 002
解説
・Subsystem sftp internal-sftp
これは、sftpでディレクトリ制限を付与するときにstfp-serverよりも楽に設定ができる記述のようです。
・Match User ユーザ名
これ以降の設定は、指定したユーザのみ適応されるという記述になります。
・PasswordAuthentication yes
パスワード認証にする
・PubkeyAuthentication no
公開鍵認証しない
・RSAAuthentication no
RSA認証しない
・ChrootDirectory
sftpの際のrootディレクトリとなる。これ以降のディレクトリしか操作出来ない
・ForceCommand internal-sftp -u 002
sftpにinternal-sftpを利用し、umaskを002設定する
上記設定後にsshdを再起動します。
/etc/rc.d/init.d/sshd restart
※再起動時には絶対に接続中の端末はログアウトしないでください。
再起動後は、別のターミナルで接続確認を行い、問題ないことを確認してください。
そうしないと、一生SSHでログインできない環境が出来上がってしまいます!
★上記設定のハマりポイント!
ChrootDirectory で指定しているディレクトリのPermissionには気をつけてください。
必ず、所有者はroot、グループもroot、権限は755で作成してください。
ChrootDirectory で指定している全ての階層のディレクトリが対象です。これをやらないとsftpが使えません!
0 件のコメント:
コメントを投稿