web-dev-qa-db-ja.com

bashのインストールが壊れているサーバーにSSHで接続する

Arch LinuxVPSへの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セッションを実行しています。ポートなどを転送して、ローカルマシンから接続する方法はありますか?

3
nanny

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では部分的なアップグレードを行わないでください。

1
nanny

ログインシェルが起動しない場合は、ログインできません。クライアントはサーバーに文字列を送信し、文字列を解釈するのはサーバー上のユーザーのログインシェル次第です。クライアントには、サーバーに「代わりに他のコマンドを実行する」ように指示する方法がありません。

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

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

いくつかのヒント:

  • メンテナンスを行うときは、常にルートシェルを開いたままにし、すべてが機能することをテストするまで閉じないでください。
  • 静的にリンクされたシェルを、sudoer権限を持つアカウントにインストールします。 Archによってパッケージ化されたものは見当たりません。 Debianにはいくつかあります ;実行可能ファイルをコピーして/etc/shellsに追加するだけです。
  • 何かが壊れていても、根を下ろす方法があることを確認してください。 rootのシェルをbash-staticまたはsashに似たものに設定するか、 toor account (rootがログインするための代替方法)を設定します。 Sudoも壊れることがあることに注意してください。ランダムに生成され(一意で記憶されていない)、金庫に保管している紙に書き留めた緊急パスワードをtoorアカウントに設定することをお勧めします。