Ubuntu 14.04の暗号化バージョンを実行しているヘッドレスサーバーのロックを解除しようとしています。これは、執筆時点でのすべての更新を含むクリーンな14.04.2インストールです。
私はdropbear
とbusybox
を使用して標準のシェナンガンを試しました。
# INSTALL
Sudo apt-get install dropbear busybox # on server
# ENABLE AND CONFIGURE IP
Sudo sed -i 's/NO_START=1/NO_START=0/g' /etc/default/dropber
Sudo sed -i 's/BUSYBOX=y/BUSYBOX=y\nDROPBEAR=y\n/g' \
/etc/iniramfs/iniramfs.conf
Sudo sed -i 's/DEVICE=.+/DEVICE=etho0/g' \
/etc/iniramfs/initramfs.conf
Sudo sed -i 's/IP=.+/IP=IP=192.168.0.11:::255.255.255.0::eth1:off' \
/etc/initramfs/initramfs.conf
Sudo update-initramfs
# COPY DROPBEAR SSH KEY
# WRONG: Sudo cp /etc/dropbear/dropbear_*_Host_key /tmp
Sudo cp /etc/initramfs-tools/root/.ssh/id_rsa /tmp # BETTER!
Sudo chown $USER:$USER /tmp/id_rsa
scp server:/tmp/id_rsa ~/.ssh/id_rsa_dropbear_server # on client
Sudo reboot # on server
# CONNECT TO SERVER
ssh -vv -i ~/.ssh/id_rsa_dropbear_server \
-o 'UserKnownHostsFile=~/.ssh/known_hosts.initramfs' \
[email protected] # on client
そこで、自動生成されたssh-keyをコピーし、dropbearの最小限の設定を行いました。驚いたことに 二 次の3つのことが誤動作しています。
192.168.0.27
を持っていることがわかりました。それで、リストされた間違ったIPをssh -vv -i ~/.ssh/dropbear_dss_Host_key -o 'UserKnownHostsFile=~/.ssh/known_hosts.initramfs' [email protected]
で試しました。それはdropbearに接続しますが:/etc/initramfs-tools/root/.ssh/authorized_keys
(dssでテスト済み-たぶんrsaでも)で、それ以外のすべての公開鍵を無視します。これが sshセッション 全体です。
サーバーの/etc/initramfs-tools/root/.ssh/authorized_keys
にあるdropbearの既知のホストに通常の公開キーファイルを追加し、通常のキーでsshを試みました。それはうまくいきませんでした。
行GRUB_CMDLINE_LINUX_DEFAULT="ip=192.168.0.11::192.168.0.1:255.255.255.0::eth0:none"
をサーバーの/etc/default/grup
に追加し、grupを更新しました。これはIPの問題を修正するためのものでした。しかし、それもうまくいきませんでした。
私は今完全にイライラし、私の忍耐の終わりにいます。どこで私は間違えましたか?また、あるガイドでは::eth0:off
と書かれており、次のガイドでは::etho:none
と書かれているため、IP設定の構文は正しいですか?
15.04に 同じ問題 のように見える人がいます。
これでサーバーに接続できます。結局、私はdropbearで使用するために間違った秘密鍵をコピーしていました。上記のスクリプトでエラーが修正されました。ただし、キーの追加はまだ機能しません(つまり、dropbearのauthorized_keys
ファイル)。 /etc/initramfs-tools/root/.ssh/authorized_keys
にdropbearの形式に追加する公開鍵を変換する必要があるWordがありますが、どのように検索するのに時間を費やしたくありません。 dss
公開鍵のみを試しました。おそらくdropbearはrsa
の方が好きですか?
また、カスタムフックスクリプトが機能しないように見えることに気付きました。それらはinitramfsのディレクトリには含まれていませんが、lsinitramfs -l /boot/initrd.img-3.16.0-43-generic
はイメージの一部としてそれらをリストします。 IP設定も同様に無視されます。 GRUB_CMDLINE_LINUX_DEFAULT="ip=192.168.0.11::192.168.0.1:255.255.255.0::eth0:none"
のgrubconfigに/etc/default/grub
を追加し、すべてを更新しても。
したがって、/usr/lib/dropbear/dropbearconvert INPUTFORMAT OUTPUTFORMAT INFILE OUTFILE
はキーを変換するプログラムのようです。 FORMATパラメーターは、openssh
またはdropbear
のいずれかです。しかし、サーバーにキーを追加する方法についての答えは/etc/initramfs-tools/root/.ssh/authorized_keys
ではないようです。そこにある既存のキーは、opensshの公開キーファイル形式です。そのため、他のopenssh形式のキーを追加しても問題はありません。まだです。
サーバー上またはクライアント上で、どのknown_hostsがあなたを悩ませているかは不明です。 Debianの http://blog.neutrino.es/2011/unlocking-a-luks-encrypted-root-partition-remotely-via-ssh/ の手順を使用しました。そのページを言い換え、役に立つと思われる調整を追加します。現代のDebianドロップボックスパッケージは、インストール時にサーバー上で必要なすべてのキーを作成しますが、参照されているチュートリアルは古く、キーを手動で作成する必要がある場合について言及しています。 YMMV。
A.サーバー上。正しく述べたように、dropbearキーとOpenSSHキーは異なりますが、相互変換可能と思われます。チュートリアルでは、次のようにサーバー上にホストキーを作成できると述べています。
dropbearkey -t rsa -f /etc/initramfs-tools/etc/dropbear/dropbear_rsa_Host_key
実際、それよりも少し難しいです。 Debian Jessieでの手順は次のとおりです。
OpenSSHキーを作成します。
ssh-keygen -t rsa -b 4096 -m PEM -f bootkey_rsa
サーバー、つまりdropbearconvertを使用する可能性が高いコンピューターにコピーします。そこで、それをdropbear形式に変換します。
/ usr/lib/dropbear/dropbearconvert openssh dropbear bootkey_rsa bootkey_dropbear_rsa
サーバーで、rootにログインし、Dropbearキーからパブリック部分をboot dropbearが検索するファイルに抽出します。
dropbearkey -y -f bootkey_dropbear_rsa | grep "^ ssh-rsa">/etc/dropbear-initramfs/authorized_keys
Initramfsを更新します。
update-initramfs -u -k all
クリーンアップ:サーバーからbootkey_dropbear_rsaとbootkey_rsaを削除します。
/etc/dropbear-initramfs/authorized_keys
として上記で指定されたupdate-initramfsによってknown_hostsが予期される場所は柔軟であり、おそらくディストリビューションからディストリビューションに変更されることに注意してください。正しい場所に確実に配置するには、/usr/share/initramfs-tools/hooks/dropbear
からソースファイルを読み取ります。
他の必要なキーは次のもので作成されます:
dropbearkey -t rsa -f /etc/initramfs-tools/root/.ssh/id_rsa.dropbear
B.クライアントには両方の種類のキーが必要なので、別のknown_hosts
があります。参照されたチュートリアルでは、接続するコマンドは次のとおりです。
ssh -o "UserKnownHostsFile=~/.ssh/known_hosts.initramfs" \
-i "~/id_rsa.initramfs" [email protected] \
"echo -ne \"MyS3cr3tK3y\" >/lib/cryptsetup/passfifo"
キーの1つであるid_rsa.initramfs
は、サーバーセクションの/etc/initramfs-tools/etc/dropbear/dropbear_rsa_Host_key
またはbootkey_rsa
ファイルです。
クライアントknown_hosts
で、OpenSSHサーバー用にすでに持っているキーと、インストールしたばかりのdropbearサーバーとの間に競合がある可能性があります。上記のコマンドを使用して接続された(known_hosts
パラメーターを除外して)通常のOpenSSHサービスのキーを-o
から一時的に削除し、ホストキーを信頼するとプロンプトが表示され、はい、それを取得しましたknown hosts
に追加されました。そこから、最後の行を既知のホスト(上記の例では~/.ssh/known_hosts.initramfs
)に移動する必要があります。
こちら dropbearのキーを変換する方法。起動スクリプトは私にとっても少し不安定です...
apt-get install dropbear initramfs-tools busybox
公開鍵をコピーしてSERVERの/etc/dropbear-initramfs/authorized_keys
に貼り付けるだけです
/etc/initramfs-tools/hooks/crypt_unlock.sh
に次のスクリプトを作成します
#!/bin/sh
PREREQ="dropbear"
prereqs() {
echo "$PREREQ"
}
case "$1" in
prereqs)
prereqs
exit 0
;;
esac
. "${CONFDIR}/initramfs.conf"
. /usr/share/initramfs-tools/hook-functions
if [ "${DROPBEAR}" != "n" ] && [ -r "/etc/crypttab" ] ; then
cat > "${DESTDIR}/bin/unlock" << EOF
#!/bin/sh
if PATH=/lib/unlock:/bin:/sbin /scripts/local-top/cryptroot; then
kill \`ps | grep cryptroot | grep -v "grep" | awk '{print \$1}'\`
# following line kill the remote Shell right after the passphrase has
# been entered.
kill -9 \`ps | grep "\-sh" | grep -v "grep" | awk '{print \$1}'\`
exit 0
fi
exit 1
EOF
chmod 755 "${DESTDIR}/bin/unlock"
mkdir -p "${DESTDIR}/lib/unlock"
cat > "${DESTDIR}/lib/unlock/plymouth" << EOF
#!/bin/sh
[ "\$1" == "--ping" ] && exit 1
/bin/plymouth "\$@"
EOF
chmod 755 "${DESTDIR}/lib/unlock/plymouth"
echo To unlock root-partition run "unlock" >> ${DESTDIR}/etc/motd
fi
実行可能にする:
chmod +x /etc/initramfs-tools/hooks/crypt_unlock.sh
/etc/initramfs-tools/initramfs.conf
を編集して、行を追加(または変更)します。
IP=192.168.1.254::192.168.1.1:255.255.255.0::eth0:off
format [Host ip]::[gateway ip]:[netmask]:[hostname]:[device]:[autoconf]
([hostname] can be omitted)
update-initramfs -u
Sudo update-rc.d dropbear disable
ssh [email protected] [-i ~/.ssh/id_rsa]
経由でサーバーに接続します皆さん、解決策が見つからなかった場合や、オンラインチュートリアルに従ってこれを実行するために髪を引っ張っている人のために...
私がオンラインで見つけたすべてのチュートリアルは、そのファイルが
authorized_keys
入る
/etc/initramfs-tools/root/.ssh/
実際にそれが入ってくることになっているとき
/etc/dropbear-initramfs/
これも表示するために@ceremcem +1。