Armadilloフォーラム

sftpサーバ/クライアント機能

ykaneko

2014年5月2日 19時46分

Armadillo-420を所有している初心者のものです。
いつもフォーラムでお世話になっております。

当方の環境で、ArmadilloとPC間のファイル転送で
sftpプロトコルを使用したいと考えていますが、
Armadillo側はサーバ、クライアントのどちらにも
対応していますでしょうか?

どうぞよろしくお願いします。

コメント

y.nakamura

2014年5月2日 23時39分

中村です。

ユーザランドのコンフィグでsftp-serverとsftpを有効にしてあげれば、
どちらも動きます。

ただ、user/openssh/Makefile内の処理でのパスの整合がとれてなくて、
手直をしました。
(sftpより先にscpで試していていて、この問題に気づきました)
直し方は人それぞれだと思うので、とりあえずはここには書きません。

それから、/etc/rc.d/SXXsshdができてないので、vendersの下の方の
Makefileを直して/etc/rc.d/SXXsshdをつくってあげるか、あるいは、
rc.localから/etc/init.d/sshdを動かすかする必要もあります。
(最近のdistのソースのこの部分は見てませんが...)

私が使っていたのは、atmark-distの20130206より前のバージョンに
入っているopenssh-4.3p2です。
20130206からopenssh-6.0p1のソースが入っていて、これを選択する
ことができるようになってます。このバージョンは使ったことはないですけど、
Makefileを見る限りでは、6.0p1のときもopenssh/Makefileの修正が
必要なのではないかなぁ、と思います。

--
なかむら

y.nakamura

2014年5月3日 0時09分

中村です。

> ただ、user/openssh/Makefile内の処理でのパスの整合がとれてなくて、
> 手直をしました。
> (sftpより先にscpで試していていて、この問題に気づきました)
> 直し方は人それぞれだと思うので、とりあえずはここには書きません。

これだとあまりにも不親切なので、もうちょっと書いておきます。

opensshのconfigureに--prefixがついてないので、デフォルトの/usr/localが
使われてます。
scpは内部からsshを呼び出すのですけど、そのときに、/usr/local/bin/sshを
探しにいってしまいます。

scpの場合はこういう不具合があって動かなかったので手直しをしたのですけど、
sftpはsshdから起動される立場ですので、この修正は不要かもしれません。
が、sftp.cのソースを見ると(4.3p2を見てます)、sftp.cの中にもsshのパス
_PATH_SSH_PROGRAMを使っている(_PATH_SSH_PROGRAMが
/usr/local/bin/sshになります)ところがあるので、どこかに影響してるかも
しれません。

パスが一致していないところがもう1ヵ所あります。
sftp-serverのインストール先です。
Makefileでは/lib/openssh/sftp-serverにインストールすることになってますが、
/etc/ssh/sshd_configには
Subsystem sftp /usr/lib/openssh/sftp-server
と書いてありますので、一致してません。

atmark-dist-20130206を調べてみたら、この部分は修正されていました。

--
なかむら

ykaneko

2014年5月3日 9時05分

中村様

丁寧な回答ありがとうございます。distのバージョンによって修正が
必要かもということですね、当方のコンフィギュレーションを確認して
トライしてみます。ありがとうございました。

金子

y.nakamura

2014年5月4日 2時12分

なかむらです。

金子さんのこの後の作業には影響ないと思いますが、
昨晩書いた内容に間違いがあったので、訂正しておきます。
なんか寝ぼけてたみたいで、書いた内容がメチャクチャ。
今読み直して間違いに気づきました。

> scpの場合はこういう不具合があって動かなかったので手直しをしたのですけど、
> sftpはsshdから起動される立場ですので、この修正は不要かもしれません。

この1行で書こうとしてたのはsftpじゃなくてsftp-serverです。

でもって、stp-serverのことなのに

> が、sftp.cのソースを見ると(4.3p2を見てます)、sftp.cの中にもsshのパス
> _PATH_SSH_PROGRAMを使っている(_PATH_SSH_PROGRAMが
> /usr/local/bin/sshになります)ところがあるので、どこかに影響してるかも

sftp.cを見て書いてしまってました。
sftp-serverには_PATH_SSH_PROGRAMを使っているところはないと思います。

クライアントのsftpはSSHサーバにアクセスするのにsshを使っているでしょうから、
sshがある場所のパス違いは問題ありのはずです。

--
なかむら