破損したサーバーをbashインストールするためのSSH

破損したサーバーをbashインストールするためのSSH

私のArch Linux VPSでncursesのインストールが中断されているようです。これでSSHを使用してログインできなくなり、次のエラーが発生します。

$ ssh [email protected]
Last login: Mon Oct 26 08:56:59 2015 from 0.0.0.0
-bash: error while loading shared libraries: libncursesw.so.5: cannot open shared object file: No such file or directory
Connection to xyz.com closed.

今は何をすべきか分かりません。サーバーで tmux セッションが実行中です。ポートなどを転送してローカルコンピュータから接続する方法はありますか?

答え1

VPSホスティングプロバイダ(DigitalOcean)のおかげで、Arch ISOで起動し、システムパーティションをマウントし、次のようにシステムアップグレードを実行できましたpacman

$ mount /dev/vda1 /mnt/arch
$ pacman --root /mnt/arch --cachedir /mnt/arch/var/cache/pacman/pkg --config /mnt/arch/etc/pacman.conf -Syyu

これで問題が解決しました。

物語の教訓:Arch Linux では部分アップグレードを実行しないでください。

答え2

ログインシェルが起動しないとログインできません。クライアントはサーバーに文字列を送信し、この文字列はサーバー上のユーザーのログインシェルによって解釈されます。クライアントは、サーバーに「代わりに別のコマンドを実行する」ように指示することはできません。

これはセキュリティメカニズムです。ユーザーのシェルが実行できるアクションが制限されると、ユーザーは許可されていないアクションを実行できません。

システム内のすべてのアカウントへのアクセスをブロックした場合は、物理アクセスや回復コンソールなどの一般的なログインをバイパスする方法を使用する必要があります。

いくつかのヒント:

  • メンテナンスを実行するときは、常にルートシェルを開いておいて、すべてが正しく機能していることをテストするまで閉じないでください。
  • sudoer権限を持つアカウントに静的にリンクされたシェルをインストールします。 Archに事前パッケージされたアイテムはありません。Debian にはいくつかあります;実行ファイルをコピーして追加するだけです/etc/shells
  • 何かが破損してもルートする方法があることを確認してください。ルートシェルを同様にbash-static設定sashするか、アカウント(rootログインの別の方法)このパスワードも壊れる可能性があることに注意してくださいsudo。アカウントにランダムに生成された緊急パスワード(固有で覚えている必要はありません)を設定し、紙に書いて金庫に保管する必要があります。

答え3

試してみました:

ssh -tユーザー名@ホスト名/bin/sh

scp Missing libncursesw.so.5からリモートでコピーすることもできます。

関連情報