Cygwin なんでも掲示板

一覧最新記事過去一覧 | 検索FAQアンテナHOME
(新規投稿・発言はできません)


スレッド

└◇3075:
Re[7]:sftpのヒストリ機能が出来ない [sftp必需品] 11/27 20:48

 └◇3078:Re[8]:sftpのヒストリ機能が出来ない [sftp必需] 11/28
  └◇3097:Re[9]:sftpのヒストリ機能が出来ない [nil] 12/27
   └◇3102:Re[10]:sftpのヒストリ機能が出来ない [sftp必需] 01/05 <


3075● Re[7]:sftpのヒストリ機能が出来ない[ sftp必需品 ] 2005 11/27 20:48
ついにインストールに成功しました。長かったです。
後に同じように困った人が出るかも知れないので自分
の解決法を以下にまとめます(まぁいないかも知れな
いけど)。素人でもわかるよう詳しく書きます。

まずopenssh4.2p1のINSTALLにも書いてあるようにsftpの
ヒストリ機能をサポートするためにはlibeditを先にイン
ストールする必要があるので適当な所からとってきまし
た。自分は
http://www.thrysoee.dk/editline/
からとってきました。cygwinもサポートされているよう
です。opensshの移植版はそこらじゅうにあるので適当
な所からとってきました。自分は
openssh-4.2p1.tar.gz
というファイルを取ってきました。これを解凍してくだ
さい。解凍の仕方は「openssh インストール」で検索す
ればすぐわかります(ようはtarを使うのです)。openssl、
zlibが必要なら各自入れてください。まあcygwinのsetup.exe
で更新しておけば大丈夫だと思います。さて準備が出来たら
./configure
make
make install
でインストールします。./configureの時にlibeditサポート
を有効にしておくのですが、それには
export LIBRARY_PATH="${LIBRARY_PATH}:/usr/local/lib:"
として環境変数LIBRARY_PATHにlibeditをインストールして
あるディレクトリを設定しておきましょう(上ではusr/local/lib
にしてあります)。gccは(多分
gccでコンパイルするから)指定されたライブラリ(libe
ditとかのこと)が見つからないと最終的にはこの環境変数
を参照するそうです(たんにPATHでもいいのかなぁ?)。
こうして
./configure --with-libedit=/usr/local/lib
とcygwinで入力するとlibeditがサポートされます。もちろ
んこのときのディレクトリはopenssh-4.2p1.tar.gzを解凍
してでしたopenssh-4.2p1といゆディレクトリです。後ろの
「--with-libedit=/usr/local/lib」はオプションと言って
./configureに色々注文をつけるために書くものでほかにも
色々あります(でももしかしたらこのオプションは無くて
もいいかもしれない・・)。色々出てきた最後にサポート
があるなしが解ります。
しかしこのままmake installとすると多分エラーを起こしま
す。sshdようの特権分離が無いからです。純粋なUNIXでは
su、useraddなどのコマンドがあるのでしょうが少なくても
自分のcygwinにはありませんから結構困りました。そこで
/usr/share/doc/Cygwin/openssh.README
に書いてあるようにオプションに
./configure --with-libedit=/usr/local/lib --prefix=/usr/local --sysconfdir=/etc --libexecdir='${sbindir}' --localstatedir=/var --datadir='${prefix}/share' --mandir='${datadir}/man' --infodir='${datadir}/info
としてみました。するとなにが良かったのか解らないのです
が先のエラーは起こらずインストールできました。確かに
解らないままインストールしたsshを使うのはセキュリティ
ー上問題がありますが・・。openssh.READMEでは
--prefix=/usr
となっていたのですが後で「sshが/usr/localに無い」と
sftpに文句を言われたのでこうしました。上でもいいかも
知れません。cygwinのsetup.exeでインストールしたopenssh
をアンインストール(setup.exeで簡単にできる)しておけ
ば大丈夫でしょう。こうして
make
make install
と順に打てばインストールできます。
その後/usr/local/binにパスを通してください(.Xinitrcなどを編集してください)。これで多分使えます。
なにぶん半分以上解ってないので不都合があるかも知れま
んが必要でしたら参考にしてみてください。
スレッド一覧


3078● Re[8]:sftpのヒストリ機能が出来ない[ sftp必需品 ] 2005 11/28 21:14
上の回答に追加しておきます。opensshをインストール
する時に
ssh_host_dsa_key
ssh_host_key
などが存在しませんと文句を言われるかもしれません
(3031:Re[5]で困っていたことです)。この時自分の
場合はssh_host_keyなどの所有者、属性などを変えたら
うまくいきました。上のようなファイルがsystemの所有
になっていたのです。そこでchownというコマンドを使い自身の所有ファイ
ルに変えたらうまくいきました。参考にしてみてください。
スレッド一覧


3097● Re[9]:sftpのヒストリ機能が出来ない[ nil ] 2005 12/27 17:45
>うまくいきました。上のようなファイルがsystemの所有
>になっていたのです。そこでchownというコマンドを使い自身の所有ファイ
>ルに変えたらうまくいきました。参考にしてみてください。

ええと、当然ながら、理由(必要性)があってそういうアクセス権(owner,mode,etc)が設定されているので、運用の為にはきちんともとに戻すか、SSHの設定作業をやり直しましょう。(場合によってはsshdなどが正常に起動しないなどの問題もおきます)

こういった、よくわからないけれど……状態は怖いので
OpenSSH 本体は素直に Cygwinパッケージのものを使い、sftpだけ libedit を static linkでコンパイルしたものを使う、という方針のほうが妥当だと思います。

その際、configureオプションは Cygwinソースのものを参考にして、libedit は libedit.aだけを残して(libedit.la など dynamic/shared link 関係のものを削除。どうせ半端なので)から sftp(openssh)をコンパイルすればよいです。
(この場合prefix=/usr/localじゃなくても sftpは好きな場所(/usr/loca/bin ?)に置けます)
(私はこの方針だったので LIBRARY_PATH 等ではまったく悩んでいない)
スレッド一覧


3102● Re[10]:sftpのヒストリ機能が出来ない[ sftp必需 ] 2006 01/05 10:29
アドバイスありがとうございます。早速上記の
ようにやってみました。
opensshをmakeしてcygwinsetupでインストールした
sftp.exeだけを上書きして取り替えるのですか・・
(上記はそうゆうことですよね?)。素人目には
かなりアクロバテックなように感じましたが、たとえ
相互に関係しているプログラムでも設定ファイルを
そのままにして正常に動くなら、たしかにそれでいいで
すわな・・。どう考えてもセキュリティー上は教え
てもらった方法のほうがいいと思いましたのでやらせて
もらいました。sftp-server.exeも書き換えました。
ダイナミックリンクが悪かったのですか・・・。たしかに
libeditを/usr/libにインストールしてlibedit.aだけを残し
てコンパイルしなおしたらうまくいきました。でもディレ
クトリ
openssh-4.2p1
を消去して
openssh-4.2p1.tar.gz
を展開しなおさないとうまくいかなかったことにはへこたれ
ました。今の所動いています。ちなみに現在/usr/local/lib
は空です。ありがとうございました。
スレッド一覧

早田のホームページへ
CGIROOM