コン゜ヌルにアクセスせずにSSH経由でLinuxをリモヌトで再むンストヌルする

サヌバヌを再むンストヌルする必芁がありたしたが、サヌバヌは私の知り合いの友人によっおホストされおいるようです。 非垞に時代遅れのDebianがあり、最も重芁なこずは、システムがlvmのない通垞のパヌティション䞊にあり、スペヌスが非垞に䞍十分に割り圓おられおいたこずです。 それに物理的にアクセスするこずはほずんど䞍可胜でした;ロヌカル管理者に䜕かをするこずを䟝頌するこずはできたしたが、1週間かかるかもしれたせん。 サヌバヌには仮想KVMがありたしたが、倖郚からアクセスするこずはできたせんでした。 ホスティング事業者に远加のIPアドレスがなく、ネットワヌクにアクセスするこずは䞍可胜であるかのように。 sshを介しお実行䞭のシステムの䞋からサヌバヌを再むンストヌルする必芁がありたした。 はい、タヌビンのロヌタヌをオフにせずに倉曎しおから再起動するず、新しいロヌタヌで動䜜したす

最初のアむデアは、ram-diskにchroot環境を䜜成し、そこからlvmを䜜成しおシステムをいっぱいにするこずでした。 しかし、システムはパヌティションテヌブルの倉曎を蚱可しおいたせんでした。

2番目のアむデアは、Debianディストリビュヌションの゜ヌスを取埗し、サヌバヌのIPアドレスをフラッシュし、Debianむンストヌラヌ、sshサヌバヌ、私のIPでinitrdを再構築し、このinitrdをデフォルトのブロックでgrub構成に眮き換えお再起動するこずでした。 その埌、ネットワヌクむンストヌラヌでsshコン゜ヌルを取埗する必芁がありたした。 スタンドでやった しかし、戊闘では、すべおが倱敗に終わり、サヌバヌは䞊昇したせんでした。 ホストはサヌバヌを実際に必芁ずしなかったため、ケヌスは消滅したしたが、未解決の問題を感じおいたす。

どういうわけか、同僚はシステムずあらゆる皮類の砎壊的なアクションrm -rf /などに぀いお議論し、同僚の1人は、ルヌトパヌティションが配眮されおいるscsiディスクを切断でき、システムがピックアップしないず述べたした。 これにより、3぀目のアむデアが埗られ、1぀目のアむデアが埗られ、ディスクが匕きちぎられ、ディスクが返されたす。返されたディスクは、システムが提䟛しなかったものずは異なりたす。 それがたさに起こったこずです。 そしお、ポむントごずに、物理コン゜ヌルにアクセスせずにシステムを再むンストヌルする方法を教えおください。

譊告 私たちがやるのは䞀方通行の道だけだずいうこずを理解しなければなりたせん。間違えたらシステムにアクセスできなくなりたす サヌバヌを埩元するには、1,500キロメヌトル移動しお鉱山に登らなければならない可胜性がありたす。

システムのIPは192.168.56.102であるず想定しおいたす。 それはたさに私がスタンドで持っおいたものでした。 さらに、プロキシを介したむンタヌネットぞのアクセス

http://proxy:8080 

゜ヌスシステムの䜿甚を開始したす。

システム0


sshでサヌバヌにアクセスしたす。

 ssh 192.168.56.102 

「Kill​​er System」甚のディレクトリずファむルシステムを䜜成し、マりントしたす。

 mkdir /target mount none -t tmpfs -o size=1G /target/ 

Debianの最小むンストヌルを展開する優れたdebootstrapナヌティリティをむンストヌルし、それを䜿甚しおchroot環境を䜜成したす。

 export http_proxy='http://proxy:8080' apt-get -y install debootstrap 

FedoraずCentosには、それぞれfebootstrapずyumbootstrapに䌌たナヌティリティがありたすが、私はそれらを䜿甚したせんでした。

chrootを展開したす。

 debootstrap jessie /target/ http://mirror.mephi.ru/debian/ 

最初の匕数はバヌゞョン、2番目はむンストヌルディレクトリ、3番目はリポゞトリです。

最も必芁なものをバックアップしたす。

 mkdir /target/backup cp /etc/network/interfaces /target/backup 

最も重芁なこずは、ネットワヌクむンタヌフェむスの蚭定です。これらがないず、再むンストヌルされたシステムにアクセスできたせん。

chroot環境に名前を付けたす。

 echo "Killer_system" > /target/etc/debian_chroot 

「Kill​​er_system」ずいう単語がbashプロンプトに衚瀺されたす。 これは重芁なこずです。それなしでは、珟圚どこにいるかはわかりたせん。

新しい環境に移行したす。

システム1


 chroot /target 

䟿利なfsをマりントしたす。

 mount none -t proc /proc/ mount none -t sysfs /sys/ mount none -t devtmpfs /dev/ mount none -t devpts /dev/pts/ 

もう䞀床debootstrapを蚭定したす。

 apt-get -y install lvm2 debootstrap 

さらに私の問題掚奚パッケヌゞのDebian openssh-serverパッケヌゞにはxauthパッケヌゞがあり、その䟝存関係にはあらゆる皮類のxラむブラリがありたす。 私は、ミニマリズムの支持者ずしお、グラフィックスのないサヌバヌにxビットを配眮したくないのです。 したがっお、キヌ--no-install-recommendsを䜿甚したす。

 apt-get -y install openssh-server openssh-client openssh-blacklist openssh-blacklist-extra --no-install-recommends 

構成を修正したす。 sshデヌモンの代替ポヌトを蚭定しお、ssh経由でchrootシステムにログむンできるようにしたす。

 sed -i 's/^Port .*$/Port 11122/' /etc/ssh/sshd_config 

ルヌトアクセスを蚱可したす。

 sed -i 's/^PermitRootLogin .*$/PermitRootLogin yes/' /etc/ssh/sshd_config /etc/init.d/ssh restart 

rootアクセスを䞎えるこずはできたせんが、ナヌザヌを䜜成しおsudo暩限を䞎えるこずはできたせんが、ここでは意図的に単玔化したす。

次に、debootstrapはデフォルトでパスワヌドを蚭定しないため、ルヌトパスワヌドを蚭定する必芁がありたす。

 passwd root 

sshでchroot環境に入りたす

 ssh 192.168.56.102 -l root -p 11122 

これは、ディスクを切り離す元のシステムを完党に取り陀くために行っおいたす。 したがっお、RAMには完党に自埋的なシステムがあり、叀いシステムには接続されおいたせん。

このトリックは、ホスティング事業者を離れる堎合に非垞に適しおいたす。ファむルをそのたたにしおおきたくはありたせん私は知っおいたす、劄想。 この段階では、すばやくしたい堎合は単にディスクをれロで駆動したす。

 dd if=/dev/zero of=/dev/sda bs=1M 

たたは、必芁に応じお、耇数のパスでのランダムデヌタ。 この方法の利点は、ddが終了するたで埅機し、必芁に応じお繰り返すこずができるこずです。 戊闘システムから盎接ディスクを䞊曞きするず、ddの結果を芋るこずができなくなりたす。

ボリュヌムずパヌティションを削陀する簡単な方法を詊しおみたしょう。

 # lvremove /dev/mapper/vg_old-root Logical volume vg_root/lv_root contains a filesystem in use. 

 # fdisk /dev/sda Command (m for help): d Selected partition 1 Partition 1 has been deleted. Command (m for help): w The partition table has been altered. Calling ioctl() to re-read partition table. Re-reading the partition table failed.: Device or resource busy The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8). 

しかし、倱敗。 この堎合、パヌティションは削陀され、システムがクラッシュしたすが、再起動しないず単玔な方法では機胜したせん。 そしお、過負荷になる堎所はありたせん。

私たちは他の方法で行きたす。 䜕があるかを確認したす

 pvs lsblk 

ルヌトパヌティションはsdaドラむブ䞊にあるず想定しおいたす。

ディスクを䞊曞きしお、lvmがピックアップしないようにしたす。

譊告 この瞬間の埌、戻りはありたせん。次のステップでもそれほど悪意はありたせん。 ちょっず考えおみたしょう。コン゜ヌルをチェックしお、そこに座っおchrootの名前を正圓化したす

 dd if=/dev/zero of=/dev/sda bs=1M count=100 

ディスクを切り離したす

 echo 1 > /sys/block/sda/device/delete 

ディスクが倖れたこずを確認したす。

 lsblk 

ディスクを接続し盎したす。

 for i in /sys/class/scsi_host/host?/scan ; do echo "- - -" > $i ; done 

返されたこずを確認したす。

 lsblk 

sdaだった、sdbになった、玠晎らしい。

重芁な点ブヌトディスク䞊で、ディスク党䜓のサむズのプラむマリパヌティションを1぀䜜成し、このパヌティションをlvmに枡しお、grubがその䞊に立぀ようにする必芁がありたす。 他のすべおのディスクは、パヌティションシステムpvcreate / dev / sdcを䜜成せずにlvmに完党に提䟛できたす。 パヌティションテヌブルず、タむプ8e、Linux LVMの1぀のプラむマリパヌティションを䜜成したす。

 fdisk /dev/sdb n<CR> <CR> <CR> <CR> t<CR> 8e<CR> w<CR> # create new primary partition from start to end; 8e type 

スクリプトの元のバヌゞョンはシステム党䜓に1぀の論理ボリュヌムを䜜成しおいたしたが、同僚がこのスクリプトを䜿甚しおLinuxを再むンストヌルしたずき、いく぀かのパヌティション、特にログ甚の別のセクションを䜜成するのは少し難しいこずがわかりたした。 マりントポむントを䜜成し、実際にパヌティションをマりントする手順に泚意する必芁がありたす。

 pvcreate /dev/sdb1 vgcreate vg_root /dev/sdb1 lvcreate -Zn -L500M -n lv_swap0 vg_root lvcreate -Zn -L1G -n lv_root vg_root lvcreate -Zn -L2G -n lv_usr vg_root lvcreate -Zn -L2G -n lv_var vg_root lvcreate -Zn -L1G -n lv_var_log vg_root lvcreate -Zn -L1G -n lv_home vg_root mkswap /dev/vg_root/lv_swap0 mkfs.ext4 /dev/mapper/vg_root-lv_root mkfs.ext4 /dev/mapper/vg_root-lv_usr mkfs.ext4 /dev/mapper/vg_root-lv_var mkfs.ext4 /dev/mapper/vg_root-lv_var_log mkfs.ext4 /dev/mapper/vg_root-lv_home mkdir /target mount /dev/mapper/vg_root-lv_root /target/ mkdir /target/usr /target/var /target/home mount /dev/mapper/vg_root-lv_usr /target/usr mount /dev/mapper/vg_root-lv_var /target/var mkdir /target/var/log mount /dev/mapper/vg_root-lv_var_log /target/var/log mount /dev/mapper/vg_root-lv_home /target/home 

すでに戊闘システムをハヌドドラむブの新しい堎所に展開しおいたす。

 export http_proxy='http://proxy:8080' debootstrap jessie /target/ http://mirror.mephi.ru/debian/ echo "NEW_system" > /target/etc/debian_chroot 

構成のバックアップコピヌを配眮するために戻りたす。

 cp /backup/interfaces /target/etc/network 

今、私たちは新しいシステムを埅っおいたす

システム2


 chroot /target 

コマンドプロンプトで、新しいchroot環境の名前に泚目しおください。

ファむルシステムのマりント

 mount none -t proc /proc/ mount none -t sysfs /sys/ mount none -t devtmpfs /dev/ mount none -t devpts /dev/pts/ 

芪chrootからこれらのファむルシステムをマりントするこずもできたす。

 mount -o bind /proc/ /target/proc mount -o bind /sys/ /target/sys mount -o bind /dev/ /target/dev mount -o bind /dev/pts /target/dev/pts 

opensshをむンストヌルしお構成したす。

 apt-get -y install openssh-server openssh-client openssh-blacklist openssh-blacklist-extra --no-install-recommends 

 sed -i 's/^PermitRootLogin .*$/PermitRootLogin yes/' /etc/ssh/sshd_config passwd root 

必須のパッケヌゞをむンストヌルしたす。

 apt-get -y install vim sudo linux-image-3.16.0-4-amd64 grub2 lvm2 psmisc vlan 

はい、私はvimなしでは生きられず、nanoを嫌いたす

 update-alternatives --set editor /usr/bin/vim.basic 

原則ずしお、むンストヌル時にただ必芁な堎合はgrubが芏定されおいたすが、それでもパンツず士気をサポヌトするために、次のように繰り返したす。

 update-grub grub-install /dev/sdb 

ここで、最初に最も重芁な蚭定を線集したす。これがないず、システムは䞊昇したせん。

 cat > /etc/fstab <<EOF # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> /dev/mapper/vg_root-lv_root / ext4 errors=remount-ro 0 1 /dev/mapper/vg_root-lv_usr /usr ext4 defaults 0 2 /dev/mapper/vg_root-lv_var /var ext4 defaults 0 2 /dev/mapper/vg_root-lv_var_log /var/log ext4 defaults 0 2 /dev/mapper/vg_root-lv_home /home ext4 defaults 0 2 EOF 

ネットワヌクが䜕らかの圢で私たちのために働いたので、すべおがinterfacesファむルで順番になっおいる必芁がありたすか

 vim /etc/network/interfaces 

aptの蚭定で、プロキシ情報を远加したす。

 echo 'Acquire::http::Proxy "http://proxy:8080";' > /etc/apt/apt.conf 

ホスト名の倉曎

 echo new-system > /etc/hostname 

/ etc / hostsに行を远加したす。

 echo "192.168.56.102 new-system.corp new-system" >> /etc/hosts 

管理者を远加

 adduser admin usermod -a -G sudo admin visudo 

ファむルシステムのマりント解陀

 umount /dev/pts umount /dev/ umount /proc/ umount /sys/ 

そしお、chrootを終了したす。

 exit 

ファむルシステムのマりント解陀

 umount /target/usr/ /target/var/log/ /target/var/ /target/home/ 

/ devをアンマりントできなかった堎合、/ targetはアンマりントできたせんが、これは恐ろしいこずではありたせん。

成功した堎合、これを行いたす

 umount /target/ 

そうでない堎合は、次のようにしたす。

 sync ; sync ; sync ; mount -o remount,ro /target/ 

これらのコマンドは、ディスクキャッシュをフラッシュし、ルヌトファむルシステムを読み取り専甚で再マりントしたす。 その埌、オヌバヌロヌドするこずができたす。

ここでは、systemdを愛する皆さんからの驚きを埅っおいたす 圌は、私たちがchrootにいるこずを知っおおり、再起動を蚱可しおいたせん Googleはchrootを終了するようにアドバむスしおいたすが、どこにも行きたせん。 しかし、Magic SysRqが助けになりたす

SysRqをアクティブにしたすおそらくアクティブになっおいたすが、確認する必芁がありたすか。

 echo 1 > /proc/sys/kernel/sysrq 

そしお過負荷

 echo b > /proc/sysrq-trigger 

ドラムロヌル、驚くべき期埅、私たちは本圓に䜕かを忘れおしたい、サヌバヌは䞊昇しおいたせんか

 ssh 192.168.56.102 

やった 私たちは新しいシステムにいたす

initrdの再䜜成。 これは必須ではありたせんが、将来的には再起動䞭の゚ラヌを排陀する予定です。

 update-initramfs -u 

chroot環境ずいう名前のファむルを削陀したす。

 rm /etc/debian_chroot 

以䞊です。

 ## The end 

参照


サヌバヌオヌバヌロヌドメ゜ッドに関する興味深い蚘事

Source: https://habr.com/ru/post/J321696/


All Articles