• 締切済み

OpenSSHでSFTPの接続ができず困っています

CentOS5のOpenSSHに、SFTPで接続できるようになったのですが書き込みができず困っています。 現在、CentOS5でサーバーを立てています、基本的に「CentOSで自宅サーバー構築」 (http://centossrv.com/)のサイトを参考にして(と言うか、そのまま設定して)います。 今回、SFTPで繋ぎたいと言うユーザーのために、(http://centossrv.com/openssh.shtml)の ページの通りに設定をして(ただし鍵方式ではなくパスワード方式です)SFTPで繋ぐことができました。 しかし、SFTPで接続はできるのですが書き込みができないのです。そこで、確認してみると (ちなみにFTPでも繋がるが書き込みはできません) [root@localhost ~]# cd /home [root@localhost home]# ls -all 合計 28 drwxr-xr-x 4 root root 4096 9月 5 17:27 . drwxr-xr-x 23 root root 4096 9月 14 16:34 .. drwxr-xr-x 9 root root 4096 9月 14 16:40 test (ユーザー(ディレクトリ)名などは書き換えてあります) のように、ユーザーのディレクトリのオーナーがrootになっていました。 そこで、オーナーをユーザーに戻してあげると、SFTPで繋げなくなってしまいます。 また、オーナーはrootのまま、権限を777に設定してもSFTPで繋げないのです。 ただし、FTPでなら繋ぐことができて書き込みもできるようになりました。 一応、検索して調べてみたりしたのですが、どうしてもできません。 そこで、解決方法をわかる方に教えていただければ大変助かります。 どうか、よろしくお願いします

みんなの回答

回答No.4

No.3です >一応、Chrootと言う物はできてるつもりだったのですが、できるとどういう状態になるのかわかりません。 Chroot できると、/etc/ssh/sshd_config ファイル内の ChrootDirectory で指定したディレクトリが、SFTP でログインしたときのルート(/)になります。 今の設定の場合、SFTPでログインしたとき、システム上の /home/test が ルート(/)として見えるようになっているはずです。 (そのために、chroot-useradd で、/bin, /etc, 以下の必要なファイルを /home/test にコピーしています) ・・・なので、 >また、オーナーはrootのまま、権限を777に設定してもSFTPで繋げないのです。 >ただし、FTPでなら繋ぐことができて書き込みもできるようになりました。 ・・・の状態では、FTP (SFTP ではなく、FTP)でつないだときにルートに移動すると、そこから /home/test というディレクトリが見える状態ではないでしょうか。 (システムのルート(/)が、FTP で接続したときのルートになり) Chroot されているかどうかは以下のようにすれば確認できます。 確認用ファイルを /home/test 以下に作成(touch /home/test/flag_test.txt) SFTP でログインして、下記2点を確認 (1) / の直下に flag_test.txt が見えていること(SFTPでログインしたときに、/home/test/ というディレクトリ構造が見えないこと)。 (2) ルートに移動後、それ以上上のディレクトリに行けないこと(「cd /」 の後、 「cd ..」 ができないこと) SFTP でログインしたときに Chroot 状況下で /home/test というディレクトリ構造を(仮に)見せたい場合は、/home/test/home/test というディレクトリを作成し、ユーザーへの読込み/書込み権限を与えれば良いことになります。 >public_htmlの外に書き込めるようにするのは >できないのでしょうか? /home/test の外のディレクトリ(例えば /var/www/html)に SFTP から書き込みを許したいというのであれば、 /home/test 下に別ディレクトリ(例えば www_html )を作成し、/var/www/html をマウントすれば、SFTP からは、作成した www_html ディレクトリを通してシステム上の /var/www/html に書きこむことができるはずです。 (/var/www/html に、ユーザーの書き込み権限を与える必要はります) (システムから実行) mkdir /home/test/www_html mout --bind /var/www/html /home/test/www_htm

すると、全ての回答が全文表示されます。
回答No.3

>また、オーナーはrootのまま、権限を777に設定してもSFTPで繋げないのです。 >ただし、FTPでなら繋ぐことができて書き込みもできるようになりました。 これは、FTPで繋げたとしても、Chroot できていない状態ではないでしょうか? ユーザー test が Chroot 後に使用する、ファイルアップロード用ディレクトリを作成し、 そのディレクトリの所有者および書き込み権限を、ユーザー test に与えてみてください。 (その前に、全ての設定を元に戻してからこれを試してください) つまり、下のような設定をしてください。 # mkdir /home/test/upload # chown test:test /home/test/upload # chmod 0755 /home/test/upload これで、test さんは、"upload" ディレクトリにファイルを置くことができるのではないかと思います。

rilakkumapro
質問者

補足

一応、Chrootと言う物はできてるつもりだったのですが、できるとどういう状態になるのかわかりません。 ちなみにSFTPで接続するが書き込めない時はSSHでも接続するが書き込めない状態で、lsを打つと下記の通りです ---------------------------------------------------------------------------- -bash-3.2$ ls -all total 36 drwxr-xr-x 9 root root 4096 Sep 14 07:40 . drwxr-xr-x 9 root root 4096 Sep 14 07:40 .. drwxr-xr-x 4 test test 4096 Sep 5 08:27 .mozilla drwxr-xr-x 2 root root 4096 Sep 13 08:42 bin drwxr-xr-x 2 root root 4096 Sep 13 08:42 dev drwxr-xr-x 2 root root 4096 Sep 13 08:42 etc drwxr-xr-x 2 root root 4096 Sep 13 08:42 lib drwxrwxrwx 23 test test 4096 Sep 7 06:59 public_html drwxr-xr-x 6 root root 4096 Sep 13 08:42 usr -bash-3.2$ ---------------------------------------------------------------------------- それで、試してみると、public_htmlの中になら書き込めることがわかりました! 一応通常のHPならこれで大丈夫だと思いますが、public_htmlの外に書き込めるようにするのは できないのでしょうか?

すると、全ての回答が全文表示されます。
  • Wr5
  • ベストアンサー率53% (2173/4061)
回答No.2

sshd_configがどんな設定になっているのか…とか、 書き込みができないと言われているのはどの場所になのか…とか、 SFTPを実行しているクライアントはなにか…とか、いろいろ不明ですが…… とりあえず、ログインできない問題に関しては… sshd_configのloglevelとか変更して、ログになにか出力されませんかね? あとは…公開鍵認証ではないようですので、 普通にsshでログインできないのか? とか、pamはどうなっているのか? とかでしょうか……。 私のところのでは…普通に動いていますけどね。 # CentOS5.6+openSSH-5.7p1(5.6p1だったかな?)とWinSCP。

rilakkumapro
質問者

補足

設定については、参考にしているサイトの設定そのままです、鍵方式ではなくパスワードを選んだくらいです。

すると、全ての回答が全文表示されます。
  • wingstar
  • ベストアンサー率37% (102/275)
回答No.1

> そこで、オーナーをユーザーに戻してあげると /home/testだけを戻してるんじゃないですか? それ以下、全てのディレクトリーやファイルを戻していますか? chownの-Rオプションをお試しを。

rilakkumapro
質問者

補足

回答ありがとうございます ただ、試してみましたが、接続できなくなるのは変わりませんでした。

すると、全ての回答が全文表示されます。

専門家に質問してみよう