web-dev-qa-db-ja.com

WindowsのVagrantボックスへのSSH?

私はウィンドウズでVirtualBox VMを起動するためにVagrantを使っています。他のプラットフォームでは、

$ vagrant ssh

vMに接続します。

どのように私は窓でこのVagrantボックスに接続しますか?

VagrantのドキュメントでPuTTYを使うように提案されている方法もうまくいきませんでした。

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

170
Sathish

私はPuTTYを使ってWindows 7上の私のVagrantボックスに接続します。

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

  • PuTTYGen を使用して%USERPROFILE%\.vagrant.d\insecure_private_keyを.ppkに変換します。
  • puTTYセッションで.ppkキーを使用 - Connection> SSH> Auth> Private key fileで設定
  • ホスト127.0.0.1を使用
  • 22の代わりにポート2222を使用
  • connection> SSH> Auth>認証用の秘密鍵でデフォルトのユーザー名(vagrant)を設定できます。
239

1つのファイルssh.rbだけを変更することによって、いくつかのVagrantコードにパッチを適用する必要があります

すべての情報はここにあります: https://Gist.github.com/284368

vagrant sshはLinuxでもLinuxと同じようにWindowsでも動作します。


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

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

120
Michael Field

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セットで新しいターミナルタブを開くことができます(オプションでそれを設定します)

95

PuTTYをダウンロードします。 http://www.chiark.greenend.org.uk/~sgtatham/PuTTY/

PuTTY.exeを使用する:

PuTTY GUI:

HostName: 127.0.0.1
Port: 2222

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

User: vagrant
Passwd: vagrant

接続を試みる前に、cmd.exeを使用してVMを確認してください。

 vagrant status

それがダウンしているならば:

vagrant up
72
Rafael Gorski

受け入れられた答え は本当に役に立ちますが、それは次のキーの代わりに起こるかもしれません:

%USERPROFILE%\.vagrant.d\insecure_private_key

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

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

{vagrant_machine_root}は、PuTTYを使用して接続したいマシンの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
28
begie

今度はPuTTYを使って接続するために次のプラグインを使うこともできます。

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

実行するだけ

vagrantプラグインをインストールするvagrant-multi-PuTTY

そして、PuTTY.exeとputtygen.exeがPATHにあることを確認してください。

それからあなたは使うことができるでしょう

気取らないPuTTY

上記の実行ファイルは以下から入手できます。

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

12
camilohe

どちらか

  1. cmdコンソールに次のように入力します。

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

または

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

    C:\Program Files (x86)\Git\bin;
    
6
Kripa Jayakumar

Windows用のOpenSSHパッケージがありますが、これは基本的にCygwinを削除したものです。それはMSIインストーラを持っており、(それに応じてあなたのパスを設定した後に) "vsagrant ssh"で動作します:

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

4

個人的には、私は Cygwin を使うだけです。これにより、Windowsで多くの一般的な* nixコマンドを使用できます。 SSHもそのひとつです。

2
Kiksy

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

これはうまくいきませんでした。しかし、Windowsの設定でEnvironment変数を修正してから、新しいコマンドPromptを起動したときには、初めて機能しました。

2
Paul Pritchard
  1. インストール Git Bash (OpenSSH、grepfindPerlsedなどに付属)

    Vagrantがインストールされている場合は、appwiz.cpl(AKA Add/Remove Programs)を開き、 Repair Vagrantのインストールこれはvagrantがあなたのgit-bashパスに自分自身を追加させるでしょう。

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

  3. cd ~/vagrant/myboxをあなたの気になるボックスのフォルダに、vagrant ssh
2
ThorSummoner

今、私は痛みのないVagrantアップグレードを可能にするはるかに良い解決策を持っています。それはパッチを当てられたファイルに基づいています。

Vagrantファイルの最初の行は次のようになります。

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

そしてパッチを当てたvagrantfile_sshファイル(元々はssh.rbという名前です)が同じディレクトリに存在しているはずです。 asvagrantfile。これはエレガントで機能的です。

パッチを当てたvagrantfile_ssh をダウンロードしてください。

2
Michael Field

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

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

他のバージョンで役立つかもしれないより多くの情報... http://www.computerhope.com/issues/ch000549.htm

1
byronyasgur

vagrant ManagerとVirtual Boxをインストールしたら、Windowsにcygwinをインストールしてみますが、cygwinのインストール中に、システムがVIMにログインできるSSHパッケージVMパッケージを選択してください。浮浪者を介してマシンを回転させた後、cygwinから。

1
Prashanth

ここで別の解決策は、エクスプローラをテストするためのWindows 10の仮想ボックスのみです。 sshユーザー:IEUser sshパス:Passw0rd!

0
Gustavo

Windows 7、8.1、およびWindows 10では、vagrant sshコマンドをgit sshとともに使用します。

Msysgitを msysgitプロジェクトページ からダウンロードするだけです。

そしてssh.exeを実行するには、Windows環境変数にbin folterを含めるか、 Gitダウンロードページ からgitをインストールし、msysgit bin folterC:\Program Files\Git\binにコピーします。

0
Rudy Alcivar

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

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

powershellから:

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

Ssh接続を強制するために、vagrant statusがあなたのvmがpoweroffまたはsuspendedモードで実際に実行されていると言っている状況では、これは役に立ちます。

上記のコマンドを覚えたり入力したくない場合は、vagrant.ps1を使って自分のPowerShellから実行できるように、.\vagrant_ssh.ps1ファイルに書いてください。

0
rxdazn

注:login as:Promptが表示されたら、ユーザー名として 'vagrant'を入力します(引用符は含みません)。 - Snorkpete 12月6日28日14:14

または、カテゴリ - >接続 - > Rloginの順に選択して、 '自動ログインユーザー名'フィールドを 'Vagrant'に設定することもできます。

セッションを保存してください。

0
BadAlgorithm

以下の行を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_rsavagrant_rsa.pubは現在のvagrantプロジェクトフォルダにある(そしてssh-keygen -t rsa -C "[email protected]"によって生成された)プライベートキーとパブリックキーで、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セットアップスクリプト の簡易版です。

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

vagrant-libvirt を使う人のために、RDPのようないくつかのポートをホストからゲストに転送したいと思うかもしれません。 vagrant-libvirtは port forwarding にsshを使用するので、上記の手順のようにWindows上でsshを設定する必要があります。そうすると以下のようにportsを転送することができます。

config.vm.network :forwarded_port, Host: 3389, guest: 3389, id: "rdp", gateway_ports: true, Host_ip: '*'
0
mixel

私も以前に同じ問題に出会った。

  1. Homesteadフォルダーで、bash init.shを使用します。

  2. D:/Users/your username/に.sshフォルダーがない場合は、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
JKol

あなたはWindows用のエミュレータ端末cmderを使うことができます。

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

  1. Cmder.netにアクセスします。
  2. 完全ダウンロードをクリックします。
  3. Unzip
  4. (省略可能)PATHに挿入されるように、binフォルダに独自の実行可能ファイルを配置します。
  5. Cmderを実行する(Cmder.exe)

enter image description here

Windowsのターミナルコマンド

設定に必要なコマンドVM vagrantを実行します。connectの場合はコマンドvagrant sshを実行します。 Watch cmderはsshクライアントを内蔵しています。

これが役に立つことを願っています。