Drobo FSにOpenSSHを入れてみた – (02)
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での解決方法があるからそこからはアイディアでなんとかなる。