Edited at

sftpのみ使用するユーザーで鍵認証を使用する

More than 1 year has passed since last update.


環境


クライアント側


  • OS: Windows 10 Pro

  • SSHクライアント: Putty

  • SSH鍵作成ソフトウェア: PuttyGen

  • SFTPクライアント: WinSCP

※Pageantは未使用


サーバー側


  • OS: Raspbian(Debian)

  • SSHサーバー: OpenSSH


sftpサーバーの環境を作る

今回は以下の投稿を参考にして構築した。ここでの投稿での説明は割愛する。


SFTPサーバを用意する - Qiita (usutaniさんの投稿)

https://qiita.com/usutani/items/fdabef73b5dff60c95c6



鍵を作る

クライアント側でPuttyGenで鍵を作成する。鍵の長さは任意に設定しても問題はない。

"Generate"ボタンをクリックし、ウィンドウ内(Keyエリア内)でマウスをゲージが満タンになるまで動かし続ける。満タンになりしばらくすると鍵が作成される。

作成した鍵にコメントを設定した方が良い。任意であるがパスフレーズの設定も行える。セキュリティを高めたい場合は推奨する。

作成したら"Save private key"で保存する。"Public key for pasting into OpenSSH authorized_keys file:"内にある"ssh-rsa ..."をクリップボードにコピーする(メモに控える)。


鍵を許可する

サーバー側でsftpのみ接続するユーザーの".ssh/authorized_keys"のファイルを開く。

控えた公開鍵を追記する。(もし他の鍵がある場合は改行して追記すること)

保存したらファイルは閉じる。


sshd_configの設定

先程の「sftpサーバーの環境を作る」というセクションの追記となる。

Match group sftponly

ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

これだけだと公開鍵を見つけることができず、認証エラーとなってしまうからだ。その原因はsudo usermod -d / sftp-userのコマンドでホームディレクトリが変更されているからだ。なので、デフォルトであるAuthorizedKeysFile %h/.ssh/authorized_keysの設定が効かないのである。その原因を解決するために以下の設定項目を追記する。

  AuthorizedKeysFile /home/%u/.ssh/authorized_keys

これにより設定はこうなるはずだ。

Match group sftponly

ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
AuthorizedKeysFile /home/%u/.ssh/authorized_keys

保存したらSSHサーバーの再起動を忘れずに。


接続テストをする

設定が終わったら接続テストを行う。

高度なサイトの設定ウィンドウでSSH > 認証のセクションに移動する。

認証条件のエリアで秘密鍵を参照し、OKをクリックする。

ログインをクリックする。パスフレーズ設定をしている場合はパスフレーズを入力する。認証できればアクセスができる。


トラブルシューティング

設定がうまくいかなかった場合は以下の内容を見直すと良い。


  • ユーザーは設定したグループに入っているか。

  • .ssh/authorized_keysの権限設定がおかしくないか。

  • SSHサーバーが起動していない。(設定が不適切で起動できていないのが主な原因と思われる)

  • .ssh/authorized_keysのファイル名があるか(スペルミスなどでよくある)


補足

sftpユーザーのルートディレクトリは権限の都合上設置することができない。そのため別途フォルダを作成し、所有権をsftpユーザーに設定しなければならない。


参考文献


  • SFTPサーバを用意する - Qiita (usutaniさんの投稿)

https://qiita.com/usutani/items/fdabef73b5dff60c95c6


  • chrootされたsftp専用ユーザを作る - Qiita (kawazさんの投稿)

https://qiita.com/kawaz/items/53d1c837dd762337eb3b