WindowsのVagrantボックスにSSHで接続しますか?


172

Vagrantを使用してVirtualBox VMをWindowsで起動しています。他のプラットフォームでは、

$ vagrant ssh

VMに接続します。

WindowsでこのVagrantボックスに接続するにはどうすればよいですか?

VagrantのドキュメントでPuTTyを使用するように提案されている方法も機能しませんでした。

http://docs-v1.vagrantup.com/v1/docs/getting-started/ssh.html



11
これはもう問題ではありません。パスにssh.exeがある場合(例:c:\ Program Files \ git \ bin)、「vagrant ssh」が機能します。
Omri Spector 2014年

1
FYI Vagrantにはdue to licensing reasons. It seems possible but until a lawyer gives the go-ahead on this, we're not gong to do this. 、Windowsインストーラーにデフォルトで ssh Ship ssh.exeが含まていません...それは私を困惑させました
KCD

回答:


243

私はPuTTYを使用してWindows7のVagrantボックスに接続しています。

あなたを確認してください

  • %USERPROFILE%\.vagrant.d\insecure_private_keyPuTTYGenを使用して.ppkに変換する
  • PuTTYセッションで.ppkキーを使用する-[接続]> [SSH]> [認証]> [秘密キーファイル]で設定
  • ホストを使用 127.0.0.1
  • 22の代わりにポート2222を使用
  • [接続]> [SSH]> [認証]> [認証用の秘密鍵]でデフォルトのユーザー名(vagrant)を設定できます

28
注意:login as:プロンプトが表示されたら、ユーザー名として「vagrant」と入力します(引用符は不要)。
snorkpete

5
そして、それをVagrantのすべてのVMに対して行います。ご存知のように、Vagrantは複数のVMで動作します。したがって、回避策ではなく、適切なソリューションを使用してください:以下に私の答えがあります。Vagrantの小さなパッチ。
マイケルフィールド

20
以下のデフォルトのユーザー名を設定できConnection > Data > Auto-login username、PPK設定は下にありますConnection > SSH > Auth > Private key for authentication
mpen

1
私が行うようにパスワードで秘密鍵を保護したい場合は、長期的には、起動時にpageant.exeアプリを使用してppkファイルをロードする方が簡単な場合があります。次に、ページェントにパスワードを1回入力すると、毎回putty端末でppkパスワードを指定する必要なくログインできます。
ラリーシルバーマン2014

8
を使用vagrant ssh-configして、パテに与えるオプションを知ることができます。
ibizaman 2014

121

1つのファイルのみを変更して、Vagrantコードをパッチする必要がありますssh.rb

すべての情報はこちら:https : //gist.github.com/2843680

vagrant ssh Linuxと同様に、Windowsでも動作するようになりました。


編集:新しいバージョンでは、これは不要になりました。変数のパスを変数ssh.exePATH追加する必要があります

コンピューターでssh.exeを検索し、パス(つまりC:\Program Files (x86)\Git\bin)をコピーして、システム環境設定を開き、環境変数の設定を見つけ、パス変数をクリックし、パスを追加し、を使用して既存のパスを区切ります;


1
この回避策を使用する場合は、問題のGithubプルリクエストについてコメントしてください。マージされたときです。github.com/mitchellh/vagrant/pull/933
Cory Dolphin

4
これは約3か月前に統合されたようです。バージョン1.2.2には確実に存在します。
ヨハン

これは、最近のVagrant distsでまだ必要ですか、パッチされていますか?
Alex

2
@Alexそれは間違いなく最近のVagrantバージョンにパッチされています。私はそれをテストし、ここでそれを文書化:robertpate.net/blog/2013/...
robertpateii

1
:あなたのgitのOpenSSHの、オープンPowerShellと実行に迅速にセットパス [Environment]::SetEnvironmentVariable("Path", "$env:Path;c:\Program Files (x86)\Git\bin\", "User")
ヤヌシュSkonieczny

96

gitバイナリを使用する別のオプション:

  1. gitをインストールします。http://git-scm.com/download/win
  2. スタートメニュー> cmd(管理者として移動するには、Shift + Enter)
  3. set PATH=%PATH%;C:\Program Files\Git\usr\bin
  4. vagrant ssh

お役に立てれば :)

数か月後にWindowsでそれを使用するだけのボーナス:Winターミナルの代わりにコンソールを使用するので、PATHを設定して新しいターミナルタブをいつでも開くことができます(オプションで設定します)。


誰かがこの回答に賛成票を投じます。私がこれをどのように機能させるかを理解しようとしていましたが、今ではわかります!ありがとう
RadiantHex 2013年

これでうまくいきました。私はGITを持っているので、同じコンソールウィンドウを再利用できるので、Puttyに切り替えるよりもずっときれいに機能します。
Bartvds 2013

2
おかげで、私は現在、conemuを使用しています。似ていますが、コンソールよりも柔軟性があります。cmd.exe、git bash、puttyなど、多くのコンソールをエイリアスやその他の凝ったものでラップしています。
Bartvds 2013

4
Git 2.5.0の場合、PATHは「C:\ Program Files \ Git \ usr \ bin」である必要があります。
ウラジミール

1
set PATH =%PATH%; C:\ Program Files \ Git \ usr \ bin正常に動作しています!ありがとう!
v.babak 2016

72

パテをダウンロード:http : //www.chiark.greenend.org.uk/~sgtatham/putty/

putty.exeの使用:

パテGUI:

HostName: 127.0.0.1
Port: 2222

接続すると(ターミナル画面):

User: vagrant
Passwd: vagrant

接続を試みる前に、cmd.exeを使用してVMを確認します。

 vagrant status

ダウンしている場合:

vagrant up

1
これは、言葉で迷子にならない方法を完璧に示しています。すごい、ありがとう!
appoll

31

受け入れ答えは、それが代わりに次のキーのことが起こることが本当に便利です。

%USERPROFILE%\.vagrant.d\insecure_private_key

別のキーをパテのフォーマットに変換する必要があります:

{vagrant_machine_root}/.vagrant/machines/default/virtualbox/private_key

Puttyを使用して接続したいマシンの{vagrant_machine_root}が入っているフォルダーはどこにありますかVagrantfile

@ibizamanがvagrantがvagrant ssh-configどのキーを使用しているかを確認するための使用について述べたように:

$ vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile c:/dev/test/.vagrant/machines/default/virtualbox/private_key <-- HERE IS THE KEY YOU NEED TO CONVERT TO THE PUTTY FORMAT
  IdentitiesOnly yes
  LogLevel FATAL

4
Puttyを使用する場合は、これが最良の答えです。正しい秘密鍵を変換する必要があります。どうもありがとう!
johnzachary

1
User値を確認し、[接続]-> [データ]-> [自動ログインユーザー名]でPuttyに値を指定するようにしてください。私のVMでは、その名前はでしたがubuntu、繰り返しログインしようとして失敗しましたvagrant
16年

11

これで、次のプラグインを使用してputtyを使用して接続することもできます。

https://github.com/nickryand/vagrant-multi-putty

実行するだけ

vagrantプラグインインストールvagrant-multi-putty

putty.exeとputtygen.exeがパスにあることを確認します

その後、使用できるようになります

浮浪者パテ

上記の実行可能ファイルは、次の場所から入手できます。

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


6

どちらか

  1. あなたにはcmd、コンソール次のように入力します。

    set PATH=%PATH%;C:\Program Files (x86)\Git\bin
    

または

  1. システムの環境変数にパスを永続的に設定します。

    C:\Program Files (x86)\Git\bin;
    

4

Windows用のOpenSSHパッケージがあり、これは基本的にCygwinを取り除いたものです。msi-Installerがあり、(それに応じてパスを設定した後)「vsagrant ssh」で動作します。

http://sourceforge.net/projects/opensshwindows/?source=directory


これは私にとって断然最良の解決策でした。あなたが与えるリンクは2010年以来更新されていません。mls
software.com/ opensshd.htmlで

2

これで、Vagrantを簡単にアップグレードできる、より優れたソリューションが手に入りました。パッチを当てたファイルに基づいています。

vagrantfileの最初の行は次のようになります。

load "vagrantfile_ssh" if Vagrant::Util::Platform.windows?

また、パッチを適用したvagrantfile_sshファイル(元の名前はssh.rb)は、vagrantfileと同じディレクトリに存在する必要があります。これはエレガントで機能的です。

パッチを適用したvagrantfile_sshをダウンロードします。


2
  1. インストールGitのバッシュ(OpenSSHのが付属しています、だけでなくgrepfindperlsed、など。)

    Vagrantがインストールされている場合は、appwiz.cpl(プログラムの追加と削除)またはVagrantのインストールを開きRepairます。これにより、vagrantがgit-bashパスに自身を追加します。

  2. Git Bashを開きます(スタートメニューから)

  3. cd ~/vagrant/mybox あなたの迷惑な箱のフォルダに vagrant ssh

2

上記のように実行していましたが、PATH =%PATH%; "C:\ Program files \ git \ usr \ bin"のみを使用して、コマンドラインで環境変数を変更しました

これは機能しませんでした。しかし、Windowsの設定で環境変数を修正してから、新しいコマンドプロンプトを開始すると、初めて動作しました。


1

個人的には、Cygwinを使用しています。これにより、Windowsで多くの一般的な* nixコマンドを使用できます。SSHはその1つです。


Cygwin binディレクトリを含めるには、PATHを変更する必要があります。たとえば、set PATH=%PATH%;c:\cygwin\bin
David Soroko

1

Windows 7(他のバージョンではテストされていません)

  1. 「マイコンピュータ」を右クリックし、プロパティをクリックします
  2. [システムの詳細設定]をクリックします
  3. [環境変数]をクリックします
  4. 「システム変数」の下の2番目のボックスを下にスクロールして、変数「パス」をクリックし、「編集」をクリックします。
  5. C:\ Program Files(x86)\ Git \ bin;を追加して、パスが変数値に含まれていることを確認します(パスがない場合はセミコロンと)(またはssh.exeへのパスは何でも)
  6. OK> OK> OK、Windowsを再起動
  7. vagrantを実行する必要がありますが、その後vagrant sshは永久に機能するはずです

他のバージョンで役立つ可能性のある詳細情報... http://www.computerhope.com/issues/ch000549.htm


1

非常に簡単です。VagrantManagerと仮想ボックスをインストールしたら、Windowsにcygwinをインストールしてみてください。ただし、cygwinをインストールする際は、SSHパッケージを選択してください。VIMパッケージを使用すると、マシンを起動した後、cygwinからVMにログインできます。浮浪者。


これがここでの最良の答えです。Cygwinはbashライクなターミナルを提供します。驚くばかり!
Neoraptor 2017

1

Windowsのエミュレーターターミナルcmderを使用できます。

以下のインストール手順に従ってください:

  1. cmder.netにアクセスします。
  2. [完全ダウンロード]をクリックします。
  3. 解凍
  4. (オプション)独自の実行可能ファイルをbinフォルダーに配置して、PATHに挿入します。
  5. Cmder(Cmder.exe)を実行する

ここに画像の説明を入力してください

Windowsのターミナルcmder

ここで、VM vagrantの設定に必要なコマンドを実行します。接続にはvagrant sshコマンドのみを実行します。cmderは組み込みのSSHクライアントを提供します。

これがお役に立てば幸いです。


0

注意:login as:プロンプトが表示されたら、ユーザー名として「vagrant」と入力します(引用符なし)。– Snorkpete 12年6月28日14:14

または、Category-> Connection-> Rloginに移動して、「Auto-login username」フィールドを「Vagrant」に設定します。

セッションを保存します。


ベストの出力を確認しvagrant ssh-configてください、これは作ることである私のVM上で、Ubuntuの/ xenial64、それはだった:正しいユーザー名ubuntu
perlyking


0

次の行をに追加しますVagrantfile

Vagrant.configure(2) do |config|

  # ...

  config.ssh.private_key_path = "vagrant_rsa"
  config.vm.provision "shell", path: "openssh.ps1"
  config.vm.provision "file", source: "./vagrant_rsa.pub", destination: "~/.ssh/authorized_keys"
end

ここでvagrant_rsaおよびvagrant_rsa.pubは、現在のvagrantプロジェクトフォルダにある(およびによって生成されたssh-keygen -t rsa -C "your@email.here")秘密鍵と公開鍵であり、openssh.ps1次のとおりです。

$is_64bit = [IntPtr]::size -eq 8

# setup openssh
$ssh_download_url = "http://www.mls-software.com/files/setupssh-7.1p1-1.exe"

if (!(Test-Path "C:\Program Files\OpenSSH\bin\ssh.exe")) {
    Write-Output "Downloading $ssh_download_url"
    (New-Object System.Net.WebClient).DownloadFile($ssh_download_url, "C:\Windows\Temp\openssh.exe")

    Start-Process "C:\Windows\Temp\openssh.exe" "/S /privsep=1 /password=D@rj33l1ng" -NoNewWindow -Wait
}

Stop-Service "OpenSSHd" -Force

# ensure vagrant can log in
Write-Output "Setting vagrant user file permissions"
New-Item -ItemType Directory -Force -Path "C:\Users\vagrant\.ssh"
C:\Windows\System32\icacls.exe "C:\Users\vagrant" /grant "vagrant:(OI)(CI)F"
C:\Windows\System32\icacls.exe "C:\Program Files\OpenSSH\bin" /grant "vagrant:(OI)RX"
C:\Windows\System32\icacls.exe "C:\Program Files\OpenSSH\usr\sbin" /grant "vagrant:(OI)RX"

Write-Output "Setting SSH home directories"
    (Get-Content "C:\Program Files\OpenSSH\etc\passwd") |
    Foreach-Object { $_ -replace '/home/(\w+)', '/cygdrive/c/Users/$1' } |
    Set-Content 'C:\Program Files\OpenSSH\etc\passwd'

# Set shell to /bin/sh to return exit status
$passwd_file = Get-Content 'C:\Program Files\OpenSSH\etc\passwd'
$passwd_file = $passwd_file -replace '/bin/bash', '/bin/sh'
Set-Content 'C:\Program Files\OpenSSH\etc\passwd' $passwd_file

# fix opensshd to not be strict
Write-Output "Setting OpenSSH to be non-strict"
$sshd_config = Get-Content "C:\Program Files\OpenSSH\etc\sshd_config"
$sshd_config = $sshd_config -replace 'StrictModes yes', 'StrictModes no'
$sshd_config = $sshd_config -replace '#PubkeyAuthentication yes', 'PubkeyAuthentication yes'
$sshd_config = $sshd_config -replace '#PermitUserEnvironment no', 'PermitUserEnvironment yes'
# disable the use of DNS to speed up the time it takes to establish a connection
$sshd_config = $sshd_config -replace '#UseDNS yes', 'UseDNS no'
# disable the login banner
$sshd_config = $sshd_config -replace 'Banner /etc/banner.txt', '#Banner /etc/banner.txt'
# next time OpenSSH starts have it listen on th eproper port
Set-Content "C:\Program Files\OpenSSH\etc\sshd_config" $sshd_config

Write-Output "Removing ed25519 key as Vagrant net-ssh 2.9.1 does not support it"
Remove-Item -Force -ErrorAction SilentlyContinue "C:\Program Files\OpenSSH\etc\ssh_host_ed25519_key"
Remove-Item -Force -ErrorAction SilentlyContinue "C:\Program Files\OpenSSH\etc\ssh_host_ed25519_key.pub"

# use c:\Windows\Temp as /tmp location
Write-Output "Setting temp directory location"
Remove-Item -Recurse -Force -ErrorAction SilentlyContinue "C:\Program Files\OpenSSH\tmp"
C:\Program` Files\OpenSSH\bin\junction.exe /accepteula "C:\Program Files\OpenSSH\tmp" "C:\Windows\Temp"
C:\Windows\System32\icacls.exe "C:\Windows\Temp" /grant "vagrant:(OI)(CI)F"

# add 64 bit environment variables missing from SSH
Write-Output "Setting SSH environment"
$sshenv = "TEMP=C:\Windows\Temp"
if ($is_64bit) {
    $env_vars = "ProgramFiles(x86)=C:\Program Files (x86)", `
        "ProgramW6432=C:\Program Files", `
        "CommonProgramFiles(x86)=C:\Program Files (x86)\Common Files", `
        "CommonProgramW6432=C:\Program Files\Common Files"
    $sshenv = $sshenv + "`r`n" + ($env_vars -join "`r`n")
}
Set-Content C:\Users\vagrant\.ssh\environment $sshenv

# record the path for provisioners (without the newline)
Write-Output "Recording PATH for provisioners"
Set-Content C:\Windows\Temp\PATH ([byte[]][char[]] $env:PATH) -Encoding Byte

# configure firewall
Write-Output "Configuring firewall"
netsh advfirewall firewall add rule name="SSHD" dir=in action=allow service=OpenSSHd enable=yes
netsh advfirewall firewall add rule name="SSHD" dir=in action=allow program="C:\Program Files\OpenSSH\usr\sbin\sshd.exe" enable=yes
netsh advfirewall firewall add rule name="ssh" dir=in action=allow protocol=TCP localport=22

Start-Service "OpenSSHd"

これはjoefitzgerald / packer-windows opensshセットアップスクリプトの簡易バージョンです。

これでvagrant ssh、Windowsボックスに入ることができます。

vagrant-libvirtを使用する場合は、RDPなどの一部のポートをホストからゲストに転送したい場合があります。vagrant-libvirtはポート転送に sshを使用するため、上記の手順のようにWindowsでsshをセットアップする必要があり、次のようにポートを転送できます。

config.vm.network :forwarded_port, host: 3389, guest: 3389, id: "rdp", gateway_ports: true, host_ip: '*'

私のために働いていません。ssh-keygenを実行するときにパスワードは必要ですか?
Jared Beach

@JaredBeachいいえ、キーを生成するときにパスフレーズを入力しないでください。
ミクセル2017

0

以前にも同じ問題に遭遇しました。

  1. ホームステッドフォルダーで、を使用しますbash init.sh

  2. に.sshフォルダーがない場合はD:/Users/your username/、sshキーのペアを取得する必要がありますssh-keygen -t rsa -C "you@homestead"

  3. Homestead.yaml(homestead /)を編集しauthoriza: ~/.ssh/id_rsa.pubます。

  4. keys: - ~/.ssh/id_rsa

5。

folders:
    - map: (share directory path in the host computer) 
      to: /home/vagrant/Code

sites:
    - map: homestead.app
      to: /home/vagrant/Code
  1. git bashデスクトップアプリを使用する必要があります

  2. git bashデスクトップアプリを開きます。 vagrant up

  3. vagrant ssh


0

ここでの別のソリューションですが、エクスプローラーをテストするためのWindows 10の仮想ボックス専用です。sshユーザー:IEUser ssh pass:Passw0rd!


0

vagrantインストールフォルダーには、Linuxのssh(1)のように動作するssh.exeが含まれています(同じフラグ/引数を取ります)。

使用されているすべての引数を確認するには、vagrant ssh-configまたはvagrant ssh --debugより詳細な出力を実行します。

Powershellから:

C:\\HashiCorp\\Vagrant\\embedded\\usr\\bin/ssh.EXE ubuntu@127.0.0.1 -p 2222 -o LogLevel=FATAL -o DSAAuthentication=yes -o Strict
HostKeyChecking=no -i "C:/Users/path/to/project/.vagrant/machines/default/virtualbox/private_key"

これはvagrant status、VMが次の場所にあるpoweroffか、suspended、ssh接続を強制するために実際に実行されていることが確認されたときにモード」モード」。

上記のコマンドを覚えたり入力したりしたくない場合は、vagrant.ps1ファイルに書き込んで、Powershell から実行できるようにします。 .\vagrant_ssh.ps1


0

PuTTYの良い代替手段はMintty端末エミュレーターです。PuTTYよりも多くの構成可能なオプションがあります。


-1

この質問に対するより良い答えは次のようになると思います:

https://eamann.com/tech/linux-flavored-windows/

Ericは、WindowsコンピューターをLinux環境に変える方法に関する素晴らしい記事を書きました。Vimをcmdでネイティブに動作させるためのハックがあっても。

このガイドを実行すると、基本的にgit cliをインストールできるようになり、いくつかのハックで、コマンドプロンプトを起動してvagrant sshと入力し、vagrantボックスのフォルダーに移動すると、適切に正しく動作します。 sshキーなどを設定する必要があります。sshとgit cli / binに付属するものはすべて含まれています。

これにより、Powershellを実際に実行しても、* nixの優れた機能をすべて利用できるようになります。これにより、環境が本当に簡素化され、Vagrantなどの実行が容易になります。

TL; DR Git cliをダウンロードし、PATHにgit / binを追加します。/ binのvim.batをハックしてWindowsで動作するようにします。cmdでネイティブにsshを使用します。


なぜ今投票されたのですか?これは合理的なソリューションであり、Windowsで開発したい場合、これは優れたオプションであり、パテをハックしたり、他のコマンドをハックするよりもはるかに優れています。
Mark Liu、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.