DigiLoog

PC関係の事なら何でもいけるそんな処

Archive for the ‘Linux’ Category

Drobo FSにOpenSSHを入れてみた – (03)

2011年03月27日(日) - 00:00 | カテゴリ: Linux

前(エラー回避編)

6. ユーザ設定
まずユーザ登録。ちなみに、初期状態ならDashboardの方で登録してあるユーザ+パスワードとrootでログインする事が出来る。
必要なら、SSH専用ユーザをDashboard上で作成しておくといいかもしれない。

次にrootパスワードの変更(SSH鯖を入れたなら、絶対にやる。やっておかないとrootで簡単に誰でも入れてしまう)
と言っても先の通りpasswdでパスワードを変更しても再起動をかけるとなぜかrootのパスワードがrootに戻ってしまう。
なので、Dropbear付属のパスワード変更スクリプトを利用してrootパスワードを変更する。
_/_/_/_/_/ コ マ ン ド _/_/_/_/_/
# cd /mnt/(DroboFSのDNS名)/Shares/DroboApps/dropbear
# ./root_passwd(または、[# sh ./root_passwd])
//以後、普段のpasswdと同じ。
_/_/_/_/_/ こ こ ま で _/_/_/_/_/
このスクリプトではrootのパスワードしか変更する事が出来ない。
他のユーザはDashboardから変更する。

上で普通のユーザを設定したら、root以外のユーザでログインしてみる。
そこからrootになろうとしても([$ su -])、
なにかエラーがでて(メモるの忘れた(´・ω・`))rootになる事が出来ない。
これは、DroboFSで使っているBusyBoxにSUID(SetUserID)が付属されていないから(BusyBoxはググって調べる)
これがないと、BusyBoxの場合root権限でsuを実行する事が出来ないのでエラーが出る。
なので、rootで入り直して
_/_/_/_/_/ コ マ ン ド _/_/_/_/_/
# chmod 755 /bin/busybox
# chmod +s /bin/busybox
_/_/_/_/_/ こ こ ま で _/_/_/_/_/
をすれば一般ユーザからでもsuを実行する事が出来る。

7. OpenSSHの設定
と言っても大方普段のOpenSSHと同じ設定方法で大丈夫。
最低限やるとしたら、
_/_/_/_/_/ sshd_config _/_/_/_/_/
Protocol 2
PermitRootLogin no
PermitEmptyPasswords no
_/_/_/_/_/ こ こ ま で _/_/_/_/_/
の三つぐらいかと。
また、公開鍵方式でログインも出来る(当たり前っちゃ当たり前だが…)
公開鍵方式でログインをするのなら、ググればいくらでも出てくるので割愛。
唯一のコツとしては、公開鍵方式でログインしたいユーザでSSH接続をしてから、
一回[$ cd]をやってホームディレクトリに戻った状態から設定をする事と、
常にrootで入りっぱなしのコンソールを用意しておく事(もし設定を間違えたとしても、rootでログインしているコンソールが一つでもあれば設定ファイルを上書き出来る)

あとは、sshコマンドのPATHを追加する。
普段のLinuxと同じようにもPATHを追加出来るのだが、それだと様々なユーザの.bashrcを書き換えるか、
boot時に読み込む様にするかしなければならない。
NAS等でbash系は書き換えたくないので、コマンド自体へシンボリックリンクを貼る事で代用する。
_/_/_/_/_/ コ マ ン ド _/_/_/_/_/
# cd /mnt/(DroboFSのDNS名)/Shares/DroboApps/openssh/bin
# chmod 755 *
# cd /usr/bin
# ln -s /mnt/(DroboFSのDNS名)/Shares/DroboApps/openssh/bin/ssh ssh
(以下必要なコマンド全てに対してリンクを貼る)
//新規作成したコマンドパスがちゃんと/usr/binの中から呼び出されているかを検証
# which ssh
//[/usr/bin/ssh]みたいになっていればOK
_/_/_/_/_/ こ こ ま で _/_/_/_/_/
しかし、このままだとrootからしかsshコマンドを実行出来ない。
これは、/dev内のtty関係のファイルとrandom系のファイルを一般ユーザからは実行する事が出来ないから。
一般ユーザでもsshコマンドを有効にするには、これらのファイルに対してパーミッションを変更するか、
権限やグループを変更すれば実行出来る様になる。

粗方な事は以上で終わり。
あとは、実際にsshd_configを煮詰めたり公開鍵でログイン設定をしているならパスワードでログインが出来ない事を確認したりする。
また、DroboFSはNASであってLinux鯖ではないので注意。あまりに弄りすぎるとDroboの内部構造が破壊されるかもしれない。



Drobo FSにOpenSSHを入れてみた – (02)

2011年03月26日(土) - 01:01 | カテゴリ: Linux

前(導入編)

5. OpenSSH起動エラー回避
以下は一例。他にも引っかかる要素はあるだろうけど確認できたのはこれらだけだった。
エラーログは先のopensshディレクトリ(varの下層)にある。エラーログを見て後はググるべし。
また、この項目では“OpenSSHサーバは起動していなくて、Dropbearサーバは起動している状態”を前提とする。
※BLOG自体の表示によってコマンドが改行されているみたいなっているが、本来は改行されていないので注意。
ノートパッド等にコマンドをコピペしてみると本来のコマンドが表示される。

I. 『error while loading shared libraries: libcrypto.so.1.0.0: cannot open shared object file: No such file or directory』
所謂共有ライブラリ迷子。sshdが起動する時にライブラリを参照出来ていないので直接指定する。
まず、rootでDroboFSにSSHログインをする。
_/_/_/_/_/ コ マ ン ド _/_/_/_/_/
//OpenSSHの使っているライブラリを確認してからシンボリックリンクを張る
# cd /mnt/(DroboFSのDNS名)/Shares/DroboApps/openssh/lib
# ls -l
# cd /usr/lib
//使っているDroboFSによってはライブラリ名(+数)が変わるかも
# ln -s /mnt/(DroboFSのDNS名)/Shares/DroboApps/openssh/lib/libcrypto.so libcrypto.so
# ln -s /mnt/(DroboFSのDNS名)/Shares/DroboApps/openssh/lib/libcrypto.so.1.0.0 libcrypto.so.1.0.0
# ln -s /mnt/(DroboFSのDNS名)/Shares/DroboApps/openssh/lib/libssl.so libssl.so
# ln -s /mnt/(DroboFSのDNS名)/Shares/DroboApps/openssh/lib/libssl.so.1.0.0 libssl.so.1.0.0
# ln -s /mnt/(DroboFSのDNS名)/Shares/DroboApps/openssh/lib/libz.so libz.so
# ln -s /mnt/(DroboFSのDNS名)/Shares/DroboApps/openssh/lib/libz.so.1 libz.so.1
# ln -s /mnt/(DroboFSのDNS名)/Shares/DroboApps/openssh/lib/libz.so.1.2.5 libz.so.1.2.5
//Dropbearを停止してOpenSSHが起動するかを確かめる(要再起動)
# cd /mnt/(DroboFSのDNS名)/Shares/DroboApps
# vi .servicerc
//ここでOpenSSHとDropbearの起動を入れ替える(YESとNOの反転)
# reboot(コマンドが無かったらDashboardから再起動)
_/_/_/_/_/ こ こ ま で _/_/_/_/_/
あとはOpenSSHの起動ログを見てエラーが出ていなかったらとりあえず成功。
実際にSSHで入ってみて確かめる。

II. 『fatal: /(それぞれ違うディレクトリ)/empty/sshd must be owned by root and not group or world-writable.』
これはemptyフォルダのパーミッションが正しくなく、sshdが読み込み(移動)をする事が出来ないから起きるエラー。
本来ならディレクトリのパーミッションにビット1を全部にたてれば(=移動可能にすればOK。例えば511とか755とか)いいのだが、
再起動するとパーミッションとユーザ・グループがバグるので却下。
色々解決方法はあるけど、一番楽な方法を記載。
_/_/_/_/_/ コ マ ン ド _/_/_/_/_/
//sshd_configを書き換えてsshdの実行ユーザを変更
# cd /mnt/(DroboFSのDNS名)/Shares/DroboApps/openssh/etc
# vi sshd_config
_/_/_/_/_/ 書 き 換 え _/_/_/_/_/
#UsePrivilegeSeparation yes

UsePrivilegeSeparation no
に変更
_/_/_/_/_/ こ こ ま で _/_/_/_/_/
# cd ..
//一応パーミッションも変えておく
# chmod -R 755 var
# chown -R root.root var
//chownがこれでダメだったら、以下に変更
# chown -R sshd.sshd var
_/_/_/_/_/ こ こ ま で _/_/_/_/_/
あとはログ見て、実際にログインしてみてで起動確認。

他のエラーはググってみれば標準Linuxでの解決方法があるからそこからはアイディアでなんとかなる。

続き(設定編)



Drobo FSにOpenSSHを入れてみた – (01)

2011年03月25日(金) - 21:47 | カテゴリ: Linux

Drobo本家で配布しているssh鯖であるDropbearは動作が軽いのだが、
sshコマンド自体をサポートしていなかったり設定が甘かったりであまり使いたく無いので、
Linuxユーザなら馴染みの人も多いOpenSSHを入れる。これなら公開鍵とかも簡単に設定できるし。
と言っても1からOpenSSHを入れるのは無理なので先人の公開している物を使ってやってみる。
※最悪DroboFSにアクセス出来なくなるので、DroboFS内の全データのバックアップを取っておく事!!
今回検証したバージョンは以下の通り。
Drobo Dashboard ver1.8.3[1.8.33795]
Drobo ファームウェア ver1.1.2[4.25.37045]
Dropbear ver0.52_2
OpenSSH ver5.8p1(PackageVersion)

1. 準備する物(必要なパッケージ類)
DroboAppsdropbear.zip <- opensshを入れられ無かった時に仮で使う
DroboPortsopenssh.tgz <- 今回入れる物
それ以外ではDrobo Dashboard(DroboApps有効作業 + ユーザー登録用)

2. DroboApps有効化
『[Dashboard起動] -> [Admin権限でログイン] -> [高度な制御] -> [ツール] -> [設定] ->
[管理] -> [DroboAppsを有効化]』にチェックを入れて以後OK連打
そうすれば、マイコンピュータのZドライブ(違う場合有)に“DroboApps”というネットワークドライブが出来ている筈
これが出来ていれば、有効化作業は終了

3. とりあえずOpenSSHをいれてみる
上記でダウンロードしたopenssh.tgzをDroboAppsに置く
この時、tgzは解凍しない(つまり、ドライブ下に直置き)。で、Dashboardから
『[高度な制御] -> [ツール] -> [再起動]』を使って再起動
再起動したら、もう一度DashboardにログインしてDroboAppsを再マウントする。
そうすると、opensshのディレクトリと.servicercというファイルが出来ている筈
『[openssh] -> [var] -> [log]』と移動してsshd.logにエラーが書かれていない(起動に成功していたら何も書かれていない)なら成功。
エラーが書かれていたらご愁傷様(´・ω:;.:…

4. OpenSSH無効化と代替SSHサーバ導入
OpenSSHを一発で入れる事が出来なかったので、代替SSHサーバを導入後OpenSSH鯖を入れ直す
※一発導入に成功していた場合でもrootパスワードを変更するのにdropbearに添附されているスクリプトを使う必要があるのでこの項目はやっておく
DroboApps直下にある.servicercを開いて
『openssh_enable=”YES”』を『openssh_enable=”NO”』に変更
で、上記でダウンロードしたdropbear.zipを解凍してdropbear.tgzを取り出す。
そのdropbear.tgzをDroboApps直下に置いてまたDroboFSを再起動する。
そうすると、DroboApps直下にdropbearのディレクトリが出来て、.servicercファイルには『dropbear_enable=”YES”』と追記されている
windowsからSSHクライアントを使って、“プロトコル=SSH2 / 文字コード=UTF8 / 認証方法=パスワード”でDroboFSにSSHでログインする。
dropbearをsshサーバとしていて、rootパスワードを変更していない場合はUser=root,Pass=rootでログイン出来る。
Linuxを使った事のある人ならrootのパスワードを変更したくなるだろうが、ここではまだやらない(今変えると後々面倒くさくなる)。
また、passwdコマンドで変更をしてもDroboFSをシャットダウンした後にもう一度起動させるとパスワードはrootに戻る(仕様か…?)
これで、とりあえずはsshでDroboFSにログイン出来るようになる。

続き(エラー回避編)



  • 応援中

    はじめるセカイの理想論 -goodbye world index-