Tôi đang cố tạo một VirtualBox .hộp
hình ảnh của Ubuntu Server 20.04 với người đóng gói
. Chiếc hộp này sẽ được Vagrant sử dụng sau này. Tôi muốn có một người dùng duy nhất (lang thang
) với quyền root đăng nhập qua SSH bằng cặp khóa công khai/riêng tư.
Các tập tin cấu hình như sau:
ubuntu2004.pkr.hcl:
nguồn "virtualbox-iso" "autogenerated_1" {
boot_command = ["<enter><wait2><enter><wait><f6><esc><wait>", "autoinstall<wait2> ds=nocloud;", "<wait><enter>"]
boot_wait = "2 giây"
cd_files = ["./http/dữ liệu người dùng", "./http/meta-data"]
cd_label = "dữ liệu"
disk_size = 8192
guest_additions_path = "VBoxGuestAdditions_{{ .Version }}.iso"
guest_os_type = "Ubuntu_64"
không đầu = sai
http_directory = "http"
iso_checksum = "sha256:f8e3086f3cea0fb3fefb29937ab5ed9d19e767079633960ccb50e76153effc98"
iso_urls = ["https://releases.ubuntu.com/focal/ubuntu-20.04.3-live-server-amd64.iso"]
shutdown_command = "echo 'ubuntu'|sudo -S shutdown -P now"
ssh_handshake_attempts = "200"
ssh_password = "ubuntu"
ssh_port = 22
ssh_username = "ubuntu"
ssh_wait_timeout = "10000s"
vboxmanage = [["modifyvm", "{{ .Name }}", "--memory", "1024"], ["modifyvm", "{{ .Name }}", "--cpus", "1 "]]
virtualbox_version_file = ".vbox_version"
vm_name = "packer-ubuntu-20.04-amd64"
}
xây dựng {
nguồn = ["source.virtualbox-iso.autogenerated_1"]
nhà cung cấp "tệp" {
đích = "/home/vagrant/authorized_keys"
nguồn = "/home/user/.ssh/virtual_id_ed25519"
}
nhà cung cấp "tệp" {
đích = "/home/vagrant/.ssh/authorized_keys"
nguồn = "/home/user/.ssh/virtual_id_ed25519"
}
nhà cung cấp "shell" {
tập lệnh = ["scripts/init.sh", "scripts/cleanup.sh"]
}
bộ xử lý hậu kỳ "vagrant" {
mức độ nén = "8"
đầu ra = "ubuntu-20.04-<no value>.box"
}
}
Yaml cấu hình đám mây như sau:
./http/dữ liệu người dùng:
#cloud-config
tự động cài đặt:
phiên bản 1
ngôn ngữ: en_US
bàn phím:
bố cục: vi
biến thể: chúng tôi
mạng:
mạng:
phiên bản: 2
ethernet:
enp0s3:
dhcp4: đúng
kho:
cách trình bày:
tên: lvm
xác thực:
tên máy chủ: ubuntu-server
tên người dùng: ubuntu
mật khẩu: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0"
ssh:
máy chủ cài đặt: có
các nhóm:
- Ubuntu: [root, sys]
- người dùng đám mây
người dùng:
- mặc định
- tên: lang thang
ssh_authorized_keys:
- ssh-ed25519 <<my-public-key>>
sudo: ALL=(ALL) NOPASSWD:ALL
nhóm: sudo, người dùng, quản trị viên
lock_passwd: đúng
vỏ: /bin/bash
dữ liệu người dùng:
vô hiệu hóa_root: sai
gói:
- máy chủ openssh
- xây dựng cần thiết
lệnh muộn:
- echo 'ubuntu ALL=(ALL) NOPASSWD:ALL' > /target/etc/sudoers.d/ubuntu
Tôi rõ ràng đang tải khóa công khai lên hình ảnh bằng hai tập tin
nhà cung cấp. Điều này có cần thiết không?
Cấu hình trong dữ liệu người dùng
nên làm theo tài liệu.
Khi Vagrant khởi động máy thì không đăng nhập được bằng SSH. Nếu tôi đăng nhập trực tiếp vào máy chủ theo cách thủ công (với Ubuntu
người dùng), tôi có thể thấy rằng không có người dùng lang thang
, I E. nhận mật khẩu | grep lang thang
trả về không có gì.
Cho nên,
- Tôi nên thiết lập cấu hình đám mây như thế nào để sau khi hộp được tạo, tôi có thể đăng nhập bằng người dùng
lang thang
và với các khóa SSH (không có mật khẩu)?
- Tôi có cần người dùng không
Ubuntu
? Nếu không, làm thế nào tôi có thể loại bỏ nó?
- cái gì
xác thực
tham gia dữ liệu người dùng
đang làm? Tôi có thể xóa mật khẩu khỏi đó, sử dụng các khóa SSH và không bận tâm đến việc tạo một người dùng mới rõ ràng bằng các khóa SSH không?
Tôi hy vọng rằng những điều này có thể được thực hiện bên trong các tệp cấu hình chứ không phải thông qua các tập lệnh shell.