ラベル ssh の投稿を表示しています。 すべての投稿を表示
ラベル ssh の投稿を表示しています。 すべての投稿を表示

2011年5月27日金曜日

2011年5月26日木曜日

opensshでchroot

同僚が以下のようなことをやりたいらしい。

  • サーバへのアップロードをsftpかscpかでやりたい
  • アップロードで使うユーザはシェルでのログインを許可したくない
  • アップロードで使うユーザは、自身のホーム以外に移動させたくない


そもそも、sftpとscpは何が違うのかという点は、ここが詳しい。
(同僚曰く、scpよりsftpが早いと言っていたが、この記事を読む限り、scpが高速のようでな。。。)
機能的にはsftpが充実してるようなので、sftpがいいではないかと。

この要件をまとめると、sftpでchrootを使うようにしたいということになるだろうか。
とりあえず、試してみる。
試した環境は、"CentOS release 5.5 (Final) "、64bit版。


インストール

こちらによると、opensshの4.9以降がchrootに対応しているとのことだが、CentOSの標準パッケージだと、これ以前のバージョンが入っているので、入れ替える必要がある。
ソースコンパイルで入れればよいのだが、他のサーバへ横展開することも考えて、rpmを作ってみた。

opensshのソースコードを入手
ここあたりから、ダウンロードして、/usr/src/redhat/SOURCESへ置く。

展開
#cd /usr/src/redhat/SOURCEStar zxvf openssh-5.8p2.tar.gz
x11-ssh-askpassを入手
ここからダウンロードして、/usr/src/redhat/SOURCESへ置く。

必要パッケージのインストール
今回試した環境の場合、以下のものが必要だった

yum install libX11-devel.x86_64
yum install pam-devel.i386
yum install libXt-devel-1.0.2-3.2.el5.x86_64
yum install gtk2-devel

rpmの生成
rpmbuild -bb openssh-5.8p2/contrib/redhat/openssh.spec

/usr/src/redhat/RPMS/x86_64の下にrpmファイルが生成されるはず。

# cd /usr/src/redhat/RPMS/x86_64
# ls 
openssh-5.8p2-1.x86_64.rpm                openssh-clients-5.8p2-1.x86_64.rpm    
openssh-askpass-5.8p2-1.x86_64.rpm        openssh-debuginfo-5.8p2-1.x86_64.rpm
openssh-askpass-gnome-5.8p2-1.x86_64.rpm  openssh-server-5.8p2-1.x86_64.rpm


生成したrpmでアップデートする


#rpm -Uvh openssh-5.8p2-1 openssh-clients-5.8p2-1 openssh-askpass-5.8p2-1 openssh-server-5.8p2-1

sshデーモンを再起動

#/etc/init.d/sshd stop
#/etc/init.d/sshd start