Vagrant 虛擬機器上的 SSH 基礎知識

Vagrant 虛擬機器上的 SSH 基礎知識

我正在建造一台 vagrant 機器(Ubuntu 12.04),具有以下要求:

  • 透過 Vagrant 對具有 sudo 權限的使用者進行 SSH 存取。

我已在主機上產生了公鑰/私鑰(透過ssh-keygen),並將公鑰移至authorized_keys來賓上的文件。我也嘗試過無密碼 SSH。

vagrant ssh我使用啟用密碼的 SSH 金鑰鍵入時會發生以下幾件事:

  • 我必須在主機上輸入我的金鑰短語才能透過 SSH 連線到來賓虛擬機器。
  • 每次我輸入正確的不接受關鍵字。

這導致我收到以下錯誤訊息:

SSH authentication failed! This is typically caused by the public/private
keypair for the SSH user not being properly set on the guest VM. Please
verify that the guest VM is setup with the proper public key, and that
the private key path for Vagrant is setup properly as well.

然後我嘗試了無密碼 ssh。

vagrant ssh
[email protected]'s password: 

??

我從來沒有設定過流浪用戶!它應該user@hostname和我設定的一樣,並且可以在 VirtualBox 中啟動虛擬機器時確認其工作正常。

如何讓 ssh 私鑰與 vagrant 一起正常運作?對主人做什麼,對客人做什麼?

更新

在 VirtualBox 中,虛擬機器處於活動狀態,但除了以下問題之外,我無法從 vagrant 控制台執行以下任何命令vagrant ssh

vagrant up vagrant halt

唯一有效的 vagrant 指令是vagrant suspend.當我使用它時,我實際上可以通過 停止機器vagrant halt。這是輸出:

$ vagrant halt
[default] Attempting graceful shutdown of VM...
SSH authentication failed! This is typically caused by the public/private
keypair for the SSH user not being properly set on the guest VM. Please
verify that the guest VM is setup with the proper public key, and that
the private key path for Vagrant is setup properly as well.

答案1

我正在為任何來到此線程的人添加此解決方案:

首先在主機上開啟這個檔案:

$ sudo vim ~/.vagrant.d/boxes/<yourbox>/include/_Vagrantfile

驗證是否config.ssh.private_key_path已設定為您的私鑰檔案。如果不更新的話

使用預設密碼 ssh 到 vagrant box

$ vagrant ssh (default pwd = ‘vagrant’]

進入盒子後:

vagrant@lucid64:~$ sudo visudo -f .ssh/authorized_keys

將您的公鑰添加到此文件並保存文件,然後退出框

vagrant@lucid64:~$ exit

返回本機

$ vagrant halt
$ vagrant up

這對我有用

答案2

我也遇到了同樣的問題,儘管這不是由於 SSH 金鑰問題造成的。啟動機器時,Virtualbox 工作並讓客戶端正常運作。我能夠自己透過 SSH 連接到機器,並且vagrant ssh可以工作,儘管它要求我輸入密碼。我登入並在來賓上的 /var/log/auth.log 中發現以下內容:

Feb 13 10:14:34 spaaza-dev sshd[1468]: Accepted password for vagrant from 192.168.50.1 port 61816 ssh2
Feb 13 10:14:34 spaaza-dev sshd[1468]: pam_unix(sshd:session): session opened for user vagrant by (uid=0)
Feb 13 10:14:34 spaaza-dev sshd[1636]: Received disconnect from 192.168.50.1: 11: disconnected by user
Feb 13 10:14:34 spaaza-dev sshd[1468]: pam_unix(sshd:session): session closed for user vagrant
Feb 13 10:16:44 spaaza-dev sshd[1764]: Authentication refused: bad ownership or modes for directory /home/vagrant

我進去查看/home/vagrant的權限:

drwxrwxrwx  6 vagrant vagrant 4096 Feb 13 10:15 vagrant

不好,我一直在做的其他事情無意中更改了 /home/vagrant 目錄的權限。以下修復了該問題:

# chmod 755 vagrant

drwxr-xr-x  6 vagrant vagrant 4096 Feb 13 10:15 vagrant

之後我關閉了機器,再次啟動它,vagrant 就很好地完成了它的工作。 :-)

答案3

嘗試複製流浪者不安全公鑰將文件放入.ssh/authorized_keys賓客箱中。

希望這能解決您的 ssh 問題。

如果您想確保其安全,則可以透過將您自己的 .ssh/id_rsa.pub 複製到上述文件中來實現。並設定

config.ssh.private_key_path = '~/.ssh/id_rsa'

在你的 Vagrantfile 中。

答案4

我有類似的問題。最終我透過以下方式解決了它:

  • 確保 Vagrant 和 Virtualbox 都是最新的
  • vagrant-vbguest透過安裝外掛程式確保 VirtualBox Guest Additions 是最新的GitHub紅寶石:

    vagrant plugin install vagrant-vbguest
    

相關內容