Cygwin なんでも掲示板

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


スレッド

└◇2927:
sftpのヒストリ機能が出来ない [sftp必需品] 06/08 18:22

 └◇2928:Re:sftpのヒストリ機能が出来ない [nil] 06/08
  └◇2929:Re[2]:sftpのヒストリ機能が出来ない [nil] 06/09
   └◇2932:Re[3]:sftpのヒストリ機能が出来ない [sftp必需] 06/09
    └◇2943:Re[4]:sftpのヒストリ機能が出来ない [nil] 06/13
     └◇3031:Re[5]:sftpのヒストリ機能が出来ない [sftp必需] 09/06
      └◇3070:Re[6]:sftpのヒストリ機能が出来ない [sftp必需] 10/31
       └◇3075:Re[7]:sftpのヒストリ機能が出来ない [sftp必需] 11/27
        └◇3078:Re[8]:sftpのヒストリ機能が出来ない [sftp必需] 11/28
         └◇3097:Re[9]:sftpのヒストリ機能が出来ない [nil] 12/27
          └◇3102:Re[10]:sftpのヒストリ機能が出来ない [sftp必需] 01/05 <


2927● sftpのヒストリ機能が出来ない[ sftp必需品 ] 2005 06/08 18:22
スラッシュドットジャパンでOpenSSH4.0以降では
sftpにヒストリ機能がついたと聞きました。何でも
libeditというライブアリをつかっているそうです。
しかし、自分の環境(cygwinです)ではOpenSSHを4.1
にしても機能しません。libeditを色々調べたのですが
ライブラリはコンパイルする時以外でも必要なもの
なのでしょうか?。皆さんはでうですか?。それとも
cygwinではだめなのでしょうか?。
でもカーソルキーで上を押すとただ上にカーソルが
上がるだけで「そんな命令はない」と言われます。そもそも
カーソルキーが使えてなさそうなのでsttyで設定すれば
いいのかなぁと考えたのですがNetで調べても良く解りま
せんでした。だれか知いる方いませんか?。
windowsはXPのHomeEditionです。なにぶん初心者なので
見当違いもあるかもしれませんがお願いします。
スレッド一覧


2928● Re:sftpのヒストリ機能が出来ない[ nil ] 2005 06/08 23:34
Cygwin どうこう以前に、OpenSSH をヒストリ機能を有効にしてインストールする手順を理解していないから、と思われます。

4.1 はどうやってインストールしたのですか?
自分でコンパイルしたのですか?
openssh-4.1p1/INSTALL 程度は読んでいますか?
libedit はきちんとインストールできていますか?

私はこのスペースでは、手順を初心者の方に丁寧に教えることはできません。また、libedit を Cygwin上で利用できるかどうかも未確認です。あしからず。
他のサイトや書籍で OpenSSH やその他のソフト、ライブラリのインストール or コンパイルの仕方について一般的なことなどを調べられたほうがよいのではないでしょうか。

(慣れない人は無理に sftp,Cygwin を使わなくても、WinSCP など Windows のコマンドを使ってもいいのではと思います。)
スレッド一覧


2929● Re[2]:sftpのヒストリ機能が出来ない[ nil ] 2005 06/09 00:03
すいません、Cygwin の配布版がまだ openssh-4.0p1 のままだと勘違いしたので、4.1p1 を自前でインストールしたのだと想像していました。
(当然 setup.exe で 4.1p1 じゃないと確認してから書いたのですが、何か手違いがあったようで)

配布版の sftp では libedit の機能が有効になっていないようです。
また現時点では、Cygwin には libedit は含まれていないようです。

この場合、自前で libedit, sftp をコンパイル、インストールする必要があるので、前の投稿のような要点になります。失礼しました。
スレッド一覧


2932● Re[3]:sftpのヒストリ機能が出来ない[ sftp必需品 ] 2005 06/09 21:30
ご意見ありがとうざいます。やはりlibeditをコンパイル
しないといけませんか・・。libeditがcygwinでは含まれて
いないのは自分でも確認しました。お手数かけてすみません
でした。初心者なので自分でインストールするのは不安
なのですがやってみます。
スレッド一覧


2943● Re[4]:sftpのヒストリ機能が出来ない[ nil ] 2005 06/13 22:54
「Cygwinで ftpdの設定につまづくくらいなら SSHを設定をして sftpを使え」と何度か繰り返してた手前もあり(自分では scp,rsync+ssh 以外に sftpを使うことはまずありませんが…)、ちょっと見てみました。

一応 configure なので、Cygwin 上でも compile は簡単でした。が、getpwent_r() が無いと言われて…

というわけで、初心者といってもいろいろなのでしょうが、C のプログラム経験があまり無い方には、幾分難しいかと思われます。
getpwent_r() 相当を自分で書くか、getpwnam_r() を使えばいい程度でしょうか、すでに移植があるかどうか、古い version のほうが簡単かどうかを調べたほうがよいような気がします。

(個人的には結局、libedit を用意しても ncftp などのような file completion は使えないようなので(私の設定不足のせいかもしれませんが)、履歴と編集だけでは scp 等を使うことに比べ、あまりメリットは感じませんでした。)
スレッド一覧


3031● Re[5]:sftpのヒストリ機能が出来ない[ sftp必需品 ] 2005 09/06 11:22
この書き込みをしてからかなりの時間がたちました。
忙しかったものあるのですが、まだopensshのコンパイルに
成功していないのです・・・。
libeditはopenssh-4.2p1のINSTALLに書いてある
http://www.thrysoee.dk/editline/
から
libedit-20050828-2.9.tar.gz
をダウンロードして展開し、
./configure
make
make install
としてインストールしました。make installの時
Libraries have been installed in:
/usr/local/lib
と出たので、このディレクトリーを調べると
libedit.a libedit.dll.a libedit.la
がちゃんとありました。しかしopenssshのインストール
で./configureをすると
libedit support no
と最後に出てしまいます。libeditがインストールされているディレクトリーを指定しないといけないのかな?と思い
configureオプションに
--with-libedit=/usr/local/lib
と書いてみたのですがこんどは
configure: error: libedit not found
と出てしまいます。opensshは4.2p1です。opensshのINSALL
のlibeditの説明で
「プラットフォームがネイティブにこのライブラリを有効に
しているなら, 利用できます.」
と書いてあるのですが、検索しても解らずさっぱりです。
libeditがインストールできていないのですかねぇ・・・。
誰か教えていただけると幸いです。
スレッド一覧


3070● Re[6]:sftpのヒストリ機能が出来ない[ sftp必需品 ] 2005 10/31 13:18
いまだしつこくやっています。
以前の問題は
export LIBRARY_PATH="${LIBRARY_PATH}:/usr/local/lib:"
として、環境変数LIBRARY_PATHにlibeditがインストール
されているパスを設定することで解決しました。
しかし今度はopensshをインストールする時に
./configre
make
まではうまくいくのですが
make install
をすると
/usr/sbin/sshd -t -f /etc/sshd_config
Could not load host key: /etc/ssh_host_key
Could not load host key: /etc/ssh_host_rsa_key
Could not load host key: /etc/ssh_host_dsa_key
Disabling protocol version 1. Could not load host key
Disabling protocol version 2. Could not load host key
sshd: no hostkeys available -- exiting.
とでできて止まってしまいます。ホストキーが無いので
しょうか?。Webで調べても解りません。
インストールしているのはopenssh-4.2p1です。
後もう少しだと思うのですが・・誰かおしえていただける
と幸いです。
スレッド一覧


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