升級後 WSL 上的 Kali Linux 中斷
所以我的問題如下。我從 wsl 商店安裝 Kali Linux,使用
$wsl --install -d kali-linux
. 以下已安裝PRETTY_NAME="Kali GNU/Linux Rolling" NAME="Kali GNU/Linux" ID=kali VERSION="2019.2" VERSION_ID="2019.2" ID_LIKE=debian ANSI_COLOR="1;31" HOME_URL="https://www.kali.org/" SUPPORT_URL="https://forums.kali.org/" BUG_REPORT_URL="https://bugs.kali.org/"
如果我這樣做
$sudo apt-get update
,我會收到以下錯誤Get:1 http://kali.download/kali kali-rolling InRelease [30.6 kB] Err:1 http://kali.download/kali kali-rolling InRelease The following signatures were invalid: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository <devel@kali.org> Fetched 30.6 kB in 1s (40.9 kB/s) Reading package lists... Done W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: http://kali.download/kali kali-rolling InRelease: The following signatures were invalid: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository <devel@kali.org> W: Failed to fetch http://http.kali.org/kali/dists/kali-rolling/InRelease The following signatures were invalid: EXPKEYSIG ED444FF07D8D0BF6 Kali Linux Repository <devel@kali.org> W: Some index files failed to download. They have been ignored, or old ones used instead.
然後我手動安裝kali-archive-keyring_2020.2_all.deb
$sudo dpkg -i kali-archive-keyring_2020.2_all.deb
然後我這樣做,$sudo apt-get update
它會按預期更新儲存庫。然後我做
$sudo apt-get upgrade
了到目前為止它可以工作我將我的kali升級到PRETTY_NAME="Kali GNU/Linux Rolling" NAME="Kali GNU/Linux" ID=kali VERSION="2021.4" VERSION_ID="2021.4" VERSION_CODENAME="kali-rolling" ID_LIKE=debian ANSI_COLOR="1;31" HOME_URL="https://www.kali.org/" SUPPORT_URL="https://forums.kali.org/" BUG_REPORT_URL="https://bugs.kali.org/"
現在,當我執行命令
$sudo apt-get upgrade
時,它說有包被保留。Reading package lists... Done Building dependency tree Reading state information... Done Calculating upgrade... Done The following packages have been kept back: apt apt-utils bind9-host bsdmainutils bsdutils coreutils cron curl dnsutils dpkg e2fsprogs fdisk findutils iproute2 iptables isc-dhcp-client libbind9-161 libbsd0 libc-bin libc6 libcryptsetup12 libcurl4 libdevmapper1.02.1 libext2fs2 libgnutls30 libiptc0 libirs161 libisccc161 libisccfg163 libldap-2.4-2 liblocale-gettext-perl liblwres161 libmount1 libp11-kit0 libpam-modules libpam-modules-bin librtmp1 libselinux1 libsemanage-common libslang2 libstdc++6 libsystemd0 libtext-charwidth-perl libtext-iconv-perl libudev1 libxml2 libxtables12 login logrotate mawk mlocate mount net-tools passwd perl-base procps rsyslog sed sudo systemd tar udev util-linux vim-common vim-tiny wget whois 0 upgraded, 0 newly installed, 0 to remove and 67 not upgraded.
從這一點開始,我嘗試安裝什麼並不重要,它總是會導致以下錯誤,並且 kali 已損壞,我無法進一步使用作業系統。
/usr/bin/perl: error while loading shared libraries: libcrypt.so.1: cannot open shared object file: No such file or directory dpkg: error processing package libc6:amd64 (--configure): installed libc6:amd64 package post-installation script subprocess returned error exit status 127 Errors were encountered while processing: libc6:amd64 E: Sub-process /usr/bin/dpkg returned an error code (1)
例如,如果我
$sudo apt-get update
之後嘗試它會導致sudo: account validation failure, is your account locked?
我查看了錯誤,但我沒有找到任何可行的解決方案。我將不勝感激有關此問題的任何幫助。提前致謝!
我可以重現這個,我真的很驚訝他們讓它溜走了。如this answer中所述,問題是Kali文件對於手動安裝的版本已經過時了。
可悲的是,看起來那個位置就是我們
wsl --install
為 Kali 做的事情。更新密鑰環(如您嘗試的那樣)曾經足以修復它,但不再是。現在甚至更多的簽名和/或包已經過時了。
我們也可能會找到修復它們的方法,但目前最簡單的解決方案是使用 Microsoft Store 進行安裝,而不是使用
wsl --install
命令。我從 Microsoft Store 在 WSL 中安裝了 Kali,它立即安裝為 2021.3。請注意,
wsl --unregister kali-linux
在安裝 Microsoft Store 版本之前,您應該先執行另一個操作。備擇方案
如果您無法從 Microsoft Store 安裝(並且從評論中,由於公司政策,您不能安裝),那麼有一些替代方案。所有這些都涉及獲得一個 Kali tarball 然後
wsl --import
ing 它。我已經親自用 Kali 成功地測試了每一個:
- 選項 1:從可以訪問 Microsoft Store 的另一台電腦複製 WSL Kali
如果它適合您,這可能是最可靠的方法。您不會在您的工作電腦上安裝任何 Store 軟體包,因此它至少不應該違反該政策。
- 使用另一台非工作 PC(假設您有權訪問)從應用商店安裝 WSL 和 Kali。
- 使用您的使用者名和密碼(您最終要在工作電腦上使用的使用者名和密碼——無論它是否存在於該電腦上的 Windows 中都沒有關係)進行配置。
- (可選)繼續並
sudo apt get update && sudo apt get upgrade
.- 退出卡利
- 從 PowerShell 或 CMD:
wsl --export kali-linux kali_clean.tar`
假設策略允許,使用 USB 驅動器將生成的 tarball 傳輸到您的工作電腦。如果不允許使用 USB,則將生成的 tarball 放在您有權訪問的雲中某個位置,然後將其下載到您的工作電腦上。如果您無論如何都要安裝 VM 作為替代方案,那麼在我看來,這與該過程一樣安全(且符合策略)。最終,您將下載*一些東西*以在您的工作電腦上獲取 Kali(或任何其他發行版)。 現在在您的工作電腦上... 跳至以下“從 tarball 安裝和配置 Kali”的說明... --- * *選項 2:從 Kali WSL 建構腳本建構* Kali 是我見過的少數幾個讓他們的 WSL 建構過程*很*容易找到的發行版之一。它直接列在[Get Kali](https://www.kali.org/get-kali/#kali-build-scripts)頁面上。 您首先需要一個單獨的 WSL 實例。既然我們知道 Ubuntu 是從`wsl --install -d Ubuntu`. 開始工作的,那麼就從 . 完成後可以將其刪除。 在 Ubuntu ...
do apt install -y debootstrap t clone https://gitlab.com/kalilinux/build-scripts/kali-wsl-chroot.git kali-wsl-chroot do ./build_chroot.sh The build should complete for x64 but fail for ARM. That's okay as long as `./x64/install.tar.gz` is created. do mv ./x64/install.tar.gz /mnt/c/somewhere/on/c/kali.install.tar.gz`
退出 Ubuntu `wsl --unregister Ubuntu`如果需要,請解除安裝 Ubuntu 發行版 ( )。 跳至以下“從 tarball 安裝和配置 Kali”的說明... --- * *選項 3:使用 Kali Docker 鏡像創建一個 tarball* Microsoft[在此處](https://docs.microsoft.com/en-us/windows/wsl/use-custom-distro)提供有關如何手動導入幾乎所有發行版的說明。您需要: 首先安裝另一個發行版,例如 Ubuntu(*當然*可以通過 正常工作`wsl --install`) 安裝 Docker Desktop(如果政策和許可允許)。請注意,Docker Desktop 現在需要付費許可證供企業使用,具體取決於您公司的規模。作為替代方案,您可以在 Ubuntu 發行版中安裝 Docker Engine(它仍然是免費的/OSS)。 `docker pull kalilinux/kali`或`docker pull kalilinux/kali-rolling`(參見[Kali Docker 圖像](https://www.kali.org/docs/containers/official-kalilinux-docker-images/)。 執行鏡像 ( `docker run kalilinux/kali:latest`) 從中獲取圖像的名稱`docker ps -a` 將容器導出到一個 tarball`docker export <name_or_id_from_above> kali.tar` 繼續下面的“從 tarball 安裝和配置 Kali”的說明...... --- #### 從 tarball 安裝和配置 Kali * 在 Windows 中為 Kali 創建一個目錄。我傾向於使用像`%userprofile%\WSL\instances\kali`我自己這樣的東西。 * `cd`到 PowerShell 中的該目錄。 * `wsl --import Kali . path\to\kali.tar --version 2`(或`kali.tar.gz`選項 2) * 這將使用 tarball 創建一個 Kali 實例,然後可以使用`wsl -d kali`. * 您也可以使用 將其設置為預設值`wsl --set-default kali`。 * 對於第二個(建構腳本)和第三個(Docker 映像)選項,您需要`adduser`WSL 使用者並設置其密碼:
adduser <username> usermod <username> -aG adm,cdrom,sudo,dip,plugdev
* 對於所有這些,WSL 將自動以`root`使用者身份啟動。這可以通過創建`/etc/wsl.conf`每個[超級使用者答案](https://superuser.com/a/1627461/1210833)來改變。