【Linux】[ssh]sftp-serverとinternal-sftpの違い | 夕湖津のブログ

夕湖津のブログ

問題解決に役立つ情報の提供を目指します

テーマ:

■デフォルトの/etc/ssh/sshd_config

Subsystem      sftp    /usr/libexec/openssh/sftp-server
#Subsystem       sftp    internal-sftp

 

■違いの説明

両方共、sshdのサブシステムなので、直接実行不可のため、「Subsystem」宣言で指定する

よって、上記の書き方になる。

 

SFTPでCHROOTさせる場合は、internal-sftpを使用する

(そうでないとエラーになる)

 

■詳細

・sftp-serverとinternal-sftpは、両方共OpenSSHのもの

 

・sftp-server

  L スタンドアロンのバイナリ

 

・internal-sftp

  L sshdにビルドインされているsftp(ということはsftpはsshdが入っていれば使える!)を使用するように

    sshdに告げるための単なる合言葉

  L ChrootDirectoryディレクティブを使用する場合は、こちらを有効にする(そうでないとエラーになる)

    つまり、下記の設定

 

#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp

 

Match Group sftpuser
 ChrootDirectory /var/www/home

 

■補足

ChrootDirectory で指定するディレクトリに対して、sshdは、上位のディレクトリの所有者が全てrootであるかどうかと

rootのみが書き込み権限を持っているかを確認する

よって、下記のようになる

 

○ rwxr-xr-x 3 root sftpuser 20  2月 27 01:19 home

 

✕  rwxrwxr-x 3 root sftpuser 20  2月 27 01:19 home

   ⇒ この場合、/var/log/secureに下記のようなエラーメッセージが出力されるはず

 

 fatal: bad ownership or modes for chroot directory component "/var/www/home/" [postauth]