đăng nhập vagrant dưới dạng root theo mặc định


92

Vấn đề: thường là lệnh đầu tiên tôi nhập vào các hộp của mình su -.

Câu hỏi: Làm cách nào để vagrant sshsử dụng root user theo mặc định?

Phiên bản: vagrant 1.6.5


Stack Overflow là một trang dành cho các câu hỏi về lập trình và phát triển. Câu hỏi này có vẻ lạc đề vì nó không phải về lập trình hay phát triển. Xem những chủ đề tôi có thể hỏi tại đây trong Trung tâm trợ giúp. Có lẽ Super User hoặc Unix & Linux Stack Exchange sẽ là nơi tốt hơn để hỏi. Ngoài ra, hãy xem Tôi đăng câu hỏi về Dev Ops ở đâu?
jww

Câu trả lời:


141

Điều này rất hữu ích:

sudo passwd root

đối với bất kỳ ai bị bắt gặp trước yêu cầu đặt mật khẩu gốc trong vagrant


1
Cứu cuộc đời tôi. Bạn có biết nếu điều này có bất kỳ hậu quả nào với cách hành động của người lang thang không?
Matt,

1
Bài học ở đây là nếu bạn tạo một hộp cơ sở, hãy tuân theo các quy ước do Hashicorp đề xuất và đặt mật khẩu gốc của bạn thành 'vagrant'. xem docs.vagrantup.com/v2/boxes/base.html
Mike D

Tuy nhiên, có bất kỳ vấn đề bảo mật tiềm ẩn nào với máy chủ có mật khẩu gốc thực sự dễ đoán nằm trên máy tính cá nhân của bạn không? Tôi tưởng tượng cài đặt mạng sẽ giúp được việc này, nhưng tôi tự hỏi.
Nathan Basanese

1
Cảm ơn bạn đã gợi ý. Hóa ra là các hộp vagrant của Ubuntu đặt mật khẩu ngẫu nhiên cho người dùng root (Xem groups.google.com/d/msg/vagrant-up/xMWKkKW24xs/f5OaV5QWAp4J ). Vì vậy, người ta luôn phải đặt mật khẩu gốc trước.
asmaier

Cảm ơn bạn, thực sự cần cái này
ka_lin 20/03/17

110

Giải pháp:
Thêm phần sau vào Vagrantfile:

config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'

Khi bạn kể vagrant sshtừ đó trở đi, bạn sẽ đăng nhập như rootvà mong đợi như sau:

==> mybox: Waiting for machine to boot. This may take a few minutes...
    mybox: SSH address: 127.0.0.1:2222
    mybox: SSH username: root
    mybox: SSH auth method: password
    mybox: Warning: Connection timeout. Retrying...
    mybox: Warning: Remote connection disconnect. Retrying...
==> mybox: Inserting Vagrant public key within guest...
==> mybox: Key inserted! Disconnecting and reconnecting using new SSH key...
==> mybox: Machine booted and ready!

Cập nhật ngày 23 tháng 6 năm 2015: Bản này cũng hoạt động cho phiên bản 1.7.2. Bảo mật khóa đã được cải thiện kể từ 1.7.0; kỹ thuật này ghi đè trở lại phương thức trước đó sử dụng khóa riêng đã biết. Giải pháp này không nhằm mục đích sử dụng cho một hộp có thể truy cập công khai mà không có các biện pháp bảo mật thích hợp được thực hiện trước khi xuất bản.

Tài liệu tham khảo:


Có thể có bất kỳ lý do gì để nhận được lời nhắc mật khẩu khi chạy vagrant ssh? (sau khi thực hiện những thay đổi mô tả) Vagrant phiên bản 1.7.2
roign

@RobertIgnat có thể bạn cần đặt mật khẩu gốc của mình để khớp với những gì bạn có trong config.ssh.passwordgiá trị của mình . bạn sẽ có thể nhận xét các dòng mới được thêm vào config.ssh.*để truy cập hộp của bạn và sau đó thay đổi mật khẩu gốc thông qua sudo passwd root.
Mike D

11
Đối với một máy mà đã được cấp quyền, làm các việc trên, và làmmkdir -m 700 /root/.ssh && cp ~vagrant/.ssh/authorized_keys /root/.ssh
Felipe Alvarez

2
không hoạt động đối với bản cài đặt Vagrant mới, có thể vì khi một người sử dụng ví dụ: ubuntu / xenial, người ta CÓ thể sử dụng thông tin đăng nhập của người dùng được đưa vào đó. (xem thêm stackoverflow.com/a/40478402/605463 )
axd

1
Đối với bất kỳ ai khác sử dụng centos/7: Hộp này đặt mật khẩu gốc ngẫu nhiên; người ta có thể vagrant sshvà sau đó sudo suroot, nhưng (theo những gì tôi có thể nói) thì cài đặt cấu hình không hoạt động trên một máy mới vagrant upsử dụng máy ảo này.
mhulse

35

Điều này hoạt động nếu bạn đang sử dụng hộp ubuntu / trusty64:

vagrant ssh

Khi bạn ở trong hộp ubuntu:

sudo su

Bây giờ bạn là người dùng root. Bạn có thể cập nhật mật khẩu gốc như hình dưới đây:

sudo -i
passwd

Bây giờ hãy chỉnh sửa dòng bên dưới trong tệp /etc/ssh/sshd_config

PermitRootLogin yes

Ngoài ra, thật thuận tiện để tạo tên người dùng thay thế của riêng bạn:

adduser johndoe

Chờ cho đến khi nó yêu cầu mật khẩu.


12

Nếu Vagrantfilenhư dưới đây:

config.ssh.username = 'root'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'

Nhưng vagrant vẫn hỏi bạn mật khẩu root, rất có thể hộp cơ sở bạn đã sử dụng không được cấu hình để cho phép đăng nhập root.


Ví dụ, hộp ubuntu14.04 chính thức không được đặt PermitRootLogin yestrong /etc/ssh/sshd_config.

Vì vậy, nếu bạn muốn một hộp có thể đăng nhập mặc định gốc (chỉ Vagrantfile, không làm việc nữa), bạn phải:

  1. Thiết lập vm bằng tên người dùng vagrant(bất kỳ tên nào trừ tên gốc)

  2. Đăng nhập và chỉnh sửa tệp cấu hình sshd.

    ubuntu: chỉnh sửa /etc/ssh/sshd_config, thiết lập PermitRootLogin yes

    khác: ....

    (Tôi chỉ sử dụng ubuntu, vui lòng thêm giải pháp thay thế cho các nền tảng khác)

  3. Xây dựng một hộp cơ sở mới:

    vagrant package --base your-vm-name

    cái này tạo ra một tệp package.box

  4. Thêm hộp cơ sở đó vào vagrant:

    vagrant box add ubuntu-root file:///somepath/package.box

    sau đó, bạn cần sử dụng hộp cơ sở này để xây dựng vm cho phép đăng nhập tự động với tư cách là người chủ.

  5. Hủy vm gốc bằng cách vagrant destroy

  6. Chỉnh sửa bản gốc Vagrantfile, thay đổi tên hộp thành ubuntu-rootvà tên người dùng root, sau đó vagrant uptạo một tên mới.

Tôi phải mất một thời gian để tìm hiểu, theo tôi thì nó quá phức tạp. Hy vọng người lang thang sẽ cải thiện điều này.


10

Đừng quên root được phép root để đăng nhập trước !!!

Đặt mã cấu hình bên dưới vào /etc/ssh/sshd_configtệp.

PermitRootLogin yes

Chào mừng đến với SO. Vui lòng thêm đủ chi tiết và ngữ cảnh cho câu trả lời. Đặc biệt, khi trả lời câu hỏi cũ với một số câu trả lời tốt
Jayan

điều này hữu ích hơn cho tôi so với giải pháp chính. ssh không cho phép bạn đăng nhập bằng quyền root theo mặc định.
bmbigbang

2

Lưu ý: Chỉ sử dụng phương pháp này để phát triển cục bộ, nó không an toàn . Bạn có thể thiết lập mật khẩu và cấu hình ssh trong khi cấp phép hộp. Ví dụ với debian/stretch64hộp đây là kịch bản cung cấp của tôi:

config.vm.provision "shell", inline: <<-SHELL
    echo -e "vagrant\nvagrant" | passwd root
    echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
    sed -in 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
    service ssh restart
SHELL

Thao tác này sẽ đặt mật khẩu root thành vagrantvà cho phép đăng nhập root bằng mật khẩu. Nếu bạn đang sử dụng private_networknói với địa chỉ ip 192.168.10.37thì bạn có thể ssh vớissh root@192.168.10.37

Bạn có thể cần thay đổi điều đó echosedcác lệnh tùy thuộc vào sshd_configtệp mặc định .


1

Thêm điều này vào công Vagrantfileviệc cho tôi. Các dòng này tương đương với việc bạn nhập sudo su -mỗi khi đăng nhập. Xin lưu ý rằng điều này yêu cầu cấp lại máy ảo.

config.vm.provision "shell", inline: <<-SHELL
    echo "sudo su -" >> .bashrc
SHELL

Cảm ơn vì giải pháp rất đơn giản của bạn! echo "sudo -s" >> .bashrc sẽ tốt hơn.
Honiix

1

Tôi biết đây là một câu hỏi cũ, nhưng nhìn vào câu hỏi ban đầu, có vẻ như người dùng chỉ muốn chạy một lệnh dưới quyền root, đó là điều tôi cần làm khi đang tìm kiếm câu trả lời và tình cờ gặp câu hỏi.

Vì vậy, điều này đáng để biết theo ý kiến ​​của tôi:

vagrant ssh servername -c "echo vagrant | sudo -S shutdown 0"

vagrantlà mật khẩu được lặp lại trong lệnh sudo, bởi vì như chúng ta đều biết, tài khoản vagrant có đặc quyền sudo và khi bạn sudo, bạn cần chỉ định mật khẩu của tài khoản người dùng, không phải root..và tất nhiên theo mặc định, mật khẩu của người dùng lang thang là vagrant!

Theo mặc định, bạn cần có quyền root để tắt máy, vì vậy tôi nghĩ việc tắt máy là một bài kiểm tra tốt.

Rõ ràng là bạn không cần chỉ định tên máy chủ nếu chỉ có một tên cho môi trường lang thang đó. Ngoài ra, chúng tôi đang nói về máy ảo lang thang cục bộ với máy chủ, vì vậy thực sự không có bất kỳ vấn đề bảo mật nào mà tôi có thể thấy.

Hi vọng điêu nay co ich.


0

Tôi đã gặp một số rắc rối với việc cấp phép khi cố gắng đăng nhập bằng quyền root, ngay cả với PermitRootLogin yes. Tôi đã thực hiện nó nên chỉ vagrant sshlệnh bị ảnh hưởng:

# Login as root when doing vagrant ssh
if ARGV[0]=='ssh'
  config.ssh.username = 'root'
end

-8
vagrant destroy
vagrant up

Vui lòng thêm cái này vào tệp vagrant:

config.ssh.username = 'vagrant'
config.ssh.password = 'vagrant'
config.ssh.insert_key = 'true'

Điều này không có gì vì người dùng mặc định đã mơ hồ .
Jamal

thay vì sử dụng config.ssh.username = 'vagrant' .... hãy sử dụng config.ssh.username = 'root' .... điều này sẽ hữu ích.
Jimmy MG Lim,
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.