SFTP用ユーザが必要になったのでそれを作るメモです。
とりあえず確認
Terminal
$ less /etc/group
$ less /etc/passwd
なんかまあ、グループとかユーザの確認。
ユーザの作成
Terminal
# groupadd username
# useradd -d /home/username -g username username
SFTP用ユーザとSFTP用ユーザのグループを作ります。
# mktemp -u XXXXXXXX
# passwd username
初期パスワードの指定をするのにmkpasswd
とかいうコマンドがあるらしいのだけど、入ってなかったのでmktemp
で代用した……(いいのかなこれ)
# mkdir -p /home/username/.ssh
# touch /home/username/.ssh/authorized_keys
# chmod 0700 /home/username/.ssh
# chmod 0600 /home/username/.ssh/authorized_keys
あとは.ssh
ディレクトリとか作ったりとか。authorized_keys
に鍵の追加もしておく。
SSHログイン時のコマンド指定
usernameにログインしたときに最初に実行されるコマンドを指定する。authorized_keys
の先頭に書けば良いみたい。
# vi /home/username/.ssh/authorized_keys
~username/.ssh/authorized_keys
-ssh-rsa ...
+command="internal-sftp" ssh-rsa ...
authoriezed_keys
の追加した鍵の行の先頭にcommand="internal-sftp"
を追加する。
sshd周りの設定
上でcommand
の設定したからForceCommandの指定は要らなかったかも……
/etc/ssh/sshd_config
# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
# AllowTcpForwarding no
# ForceCommand cvs server
Match User username
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
ChrootDirectory
も指定した方がいいのかな。
sshdの再起動
# service sshd restart
sshdを再起動して設定を反映させる。
確認
Terminal
$ sftp -o IdentityFile=/path/to/private-key -P port username@ipaddr
Connected to ipaddr.
sftp>
SFTPで接続できた。
Terminal
$ ssh -o IdentityFile=/path/to/private-key -p port username@ipaddr
This service allows sftp connections only.
Connection to ipaddr closed.
SSHだと接続が切断された。
これでSFTP用のユーザができるはず。