こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

WinSCPでSFTPによるファイル転送ができない

●質問の主旨

htmlファイル(index2.html)を公開するために、
ファイル転送ソフトのWinSCPを使ってファイルを
ドキュメントルート(var/www/html)に転送しようとすると、
エラーが表示されて転送できません。

転送できない原因としてどんなことが考えられるでしょうか?
また転送できるようにするためには
設定のどこを変更すれば良いでしょうか?

詳しい方がいらっしゃいましたら、ご教示願います。

●質問の補足

WinSCPでは、SFTPで転送を試みましたが、
添付画面のようなエラーメッセージが表示されて
転送ができません。


ただし転送先が一般ユーザーの
ホームディレクトリ(/home/user)の場合、
ファイル転送ができます。

またサーバー側のファイヤーウォールの設定として
以下のポートを開放済みです。

・Port22 (SSH)
・Port21 (FTP)
・Port35000~35100(FTPパッシブ)


●環境

クライアントPC(Windows8)
サーバー(Linux CentOS)
サーバーソフト(Apache2.2.15)

投稿日時 - 2014-01-13 00:18:40

QNo.8427237

困ってます

質問者が選んだベストアンサー

> クライアント側のPCで作成した
> ファイルをサーバーにUPしようと思えば、
> 大ざっぱにいうと、
> 1.SFTPで一般ユーザのホームディレクトリに転送
> 2.一般ゆーざからsuでrootに昇格
> 3.root権限で一般ユーザのホームディレクトリにあるファイルを/var/www/htmlに移動させる
いえーすざっつらいと。

>>危険なのであまりお勧めはしないというか普通はしない。
> 「危険」とのことですが、
> どういう「危険」が考えられるでしょうか?
まぁ死ぬほど危険という事はあんまりないけどね。
抽象的な話になるけど、rootでしか書き込めない場所っていうのはrootでしか書き込めないそれなりの理由がある訳よ。
なのでその原則から外れるような行動をあえて取るのは危険含みの可能性もあるでよって事。
もちろんその辺が全部分かってて適切な書き込み権限を与えるってのはrootの判断でやっちゃっていいと私個人は思っているんだけど、QAサイトという特性上「その辺の事を」踏まえないで書き込み権限をばんばん与えるような操作を説明するには「安易にこれやっちゃうと危険だよ」という事をあえて大げさに言っておいた方がいいかなって。ほら、ITProとかでWindowsのレジストリ操作をするようなTipsって大抵「レジストリをいじると動かなくなるかも云々」って書いてるでしょう。それと同じような意味合いだと思ってくれたらいい。

今回の話についての具体的な危険性という意味では、ANo2の方も触れてくれているけど、仮にユーザーuserのパスワードが漏れたらそのサイトのコンテンツを好きなように書きかえられちゃう。
もちろん漏らさないように気をつけてるとは思うし、ユーザーuserで書き換えを行えるのは/home/userと/var/www/htmlだけなのでCentOS 6のhttpd.confの初期設定では/var/www/htmlはCGIの実行や.htaccessによる設定の上書きはできないのでWebサイト経由で不正なプログラムを実行されるとかはない。
それに、例えばSFTPをパスワード認証じゃなくって公開鍵認証のみにするとか、特定のIPアドレスからしかSSH接続できなくするとか、iptablesでOUTPUTのSRC1024番以上をブロックしておくとか、何がどうなるとどう危険なのか分かっていれば対策はいくらでも打てるので「その辺」が分かってるなら死ぬほど危険て事は無いとは思うんだけどね。
LinuxでもFreeBSDでもSolarisでもAIXでも、設定によってはいくらでもアンセキュアな状態にできるよって事だな。

投稿日時 - 2014-01-13 14:14:16

お礼

再度のご回答ありがとうございます。
またファイルのUPロードに関する
たくさんのアドバイスをいただき、
とても助かります。

>その辺が全部分かってて

自分で言うのもなんですが、
ちゃんと分かってませんね(汗

一番の安全策は、root権限で
一般ユーザのホームディレクトリにあるファイルを/var/www/htmlに移動させることのようですね~。


ただ、これからPHPやRubyのプログラミングを
学習しつつ、こまめに実行結果を確認していきたいので、
クライアント側で作成した、ファイルをサーバー側に
素早くUPして実行結果を確認したいのも事実です。


従って、しばらくは、suでroot昇格しつつも、
並行して、

・SFTPの公開鍵認証
・特定のIPアドレスのみのSSH接続不可
・iptablesでOUTPUTのSRC1024番以上をブロック

の方法についても研究していきたいと思います。

投稿日時 - 2014-01-13 21:54:49

ANo.3

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

>「危険」とのことですが、
>どういう「危険」が考えられるでしょうか?

ユーザuserが書き換えたり削除したりしてはいけないものまで可能になるという事です。
またユーザuserのアカウントやパスワードが知られてはいけない人たちに知られた場合のことを考えてみてください。

投稿日時 - 2014-01-13 13:06:36

お礼

wormholeさま
コメントありがとうございます。
アドバイス参考にさせていただきます。

当分の間は、root権限で
一般ユーザのホームディレクトリにあるファイルを/var/www/htmlに移動させてファイルをUPしていきます。

投稿日時 - 2014-01-13 21:56:43

ANo.1

添付画像ではかろうじてPermission Deniedと読めるな。OKWaveは添付画像は小サイズになるので文字を読ませたい時はエラーメッセージを本文に書かないと読めない可能性があるですよ。

このPermission Deniedとは何かと言うと、「あなたはこのディレクトリ(/var/www/html)にファイルを書き込む権限がありません」という事だ。
一般的には/home/userにSFTPで転送した後でSSHでログインしてroot権限で/var/www/htmlに移動する事になるだろうな。SELinuxが有効になっている場合はそこからコンテキストの再設定を行うか、移動ではなくコピーした後で元のファイルを削除するのが良いかも。

ちょっと危険な技で、/var/www/htmlのパーミッションを775、オーナーをapache:apacheにした状態でユーザー(user)のサブグループにapacheを加えるという手がある。こうするとuserというユーザーが直接/var/www/htmlにファイルをアップロードする事ができるようになる。危険なのであまりお勧めはしないというか普通はしない。あるいは、/var/www/htmlのパーミッションを755、オーナーをuser:apacheにしてしまうという荒業も。こちらもまぁ普通はやらないけど、個人的なサーバーだったら別にいいんじゃないか。

今回はファイアウォールは関係ないです。

投稿日時 - 2014-01-13 05:33:43

補足

たびたびの質問で恐縮です。

>ユーザーが直接/var/www/htmlにファイルをアップロードする事ができるようになる。危険なのであまりお勧めはしないというか普通はしない

>一般的には/home/userにSFTPで転送した後でSSHでログインしてroot権限で/var/www/htmlに移動する

ということは、クライアント側のPCで作成した
ファイルをサーバーにUPしようと思えば、
大ざっぱにいうと、

1.SFTPで一般ユーザのホームディレクトリに転送
2.一般ゆーざからsuでrootに昇格
3.root権限で一般ユーザのホームディレクトリにある
ファイルを/var/www/htmlに移動させる

という3つの作業を行うことになるのでしょうか?

>危険なのであまりお勧めはしないというか普通はしない。


「危険」とのことですが、
どういう「危険」が考えられるでしょうか?

ちなみに今回はご指摘のとおり、
レンタルサーバーや仮想サーバーではなく、
中古PCを使った個人サーバーで行っています。

投稿日時 - 2014-01-13 10:45:36

お礼

anmochiさま
コメントありがとうございます。
上記の補足もご確認いただければ
幸いです。

投稿日時 - 2014-01-13 10:34:36

あなたにオススメの質問