Windows에서 SSH to Vagrant box?


172

Vagrant를 사용하여 Windows에서 VirtualBox VM을 시작하고 있습니다. 다른 플랫폼에서는

$ vagrant ssh

VM에 연결합니다.

Windows에서이 Vagrant Box에 어떻게 연결합니까?

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

1
참고로 방랑은 ssh를 포함하지 않는 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.exe를 ... 그것은 나를 의아해
— KCD

답변:


243

PuTTY를 사용하여 Windows7의 Vagrant 박스에 연결합니다.

당신을 확인

  • PuTTYGen을%USERPROFILE%\.vagrant.d\insecure_private_key 사용하여를 .ppk 로 변환
  • PuTTY 세션에서 .ppk 키 사용-연결> SSH> 인증> 개인 키 파일에서 구성
  • 호스트 사용 127.0.0.1
  • 22 대신 포트 2222를 사용하십시오.
  • 인증> 연결> SSH> 인증> 개인 키에서 기본 사용자 이름 (유랑)을 설정할 수

28
참고 : login as : 프롬프트가 나타나면 따옴표없이 사용자 이름으로 'vagrant'를 입력하십시오.
— snorkpete

5
그런 다음 Vagrant의 모든 VM에 대해 그렇게하십시오. Vagrant는 여러 VM과 함께 작동합니다. 따라서 해결 방법이 아닌 적절한 솔루션을 사용하십시오. 아래에 내 대답이 있습니다. Vagrant의 작은 패치.
— Michael Field

20
아래에서 기본 사용자 이름을 설정할 수 있으며 Connection > Data > Auto-login usernamePPK 설정은Connection > SSH > Auth > Private key for authentication
— mpen

1
암호로 개인 키를 보호하려는 경우 장기적으로 ppk 파일을로드 할 때 pageant.exe 앱을 사용하는 것이 더 쉬울 수 있습니다. 그런 다음 미인 대회에 비밀번호를 한 번 입력하면 매번 퍼티 터미널에서 ppk 비밀번호를 지정하지 않고도 로그인 할 수 있습니다.
— Larry Silverman

8
vagrant ssh-config퍼티에 어떤 옵션을 주어야하는지 알 수 있습니다 .
— ibizaman

121

하나의 파일 만 수정하여 일부 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에는 확실히 존재합니다.
— Johann

최근 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")
— Janusz Skonieczny

96

자식 바이너리를 사용하는 또 다른 옵션 :

  1. 자식 설치 : 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 터미널 대신 Console을 사용하므로 PATH 세트로 새 터미널 탭을 항상 열 수 있습니다 (옵션에서 구성)


누군가이 답변을 찬성했습니다. 내가 어떻게 작동하는지 알아 내려고 노력하고 있었지만 이제는 알고 있습니다! 감사합니다
— RadiantHex 2016 년

이것은 나를 위해 잘 작동했습니다. GIT을 사용하면 동일한 콘솔 창을 재사용 할 수 있기 때문에 Putty로 전환하는 것이 훨씬 깨끗합니다.
— Bartvds

2
고마워,하지만 지금 conemu 사용 합니다 . 콘솔과 비슷하지만 더 유연합니다. cmd.exe, git bash 및 putty와 같은 많은 콘솔을 alliases 및 기타 멋진 것들로 포장했습니다.
— Bartvds

4
Git 2.5.0의 경우 PATH는 "C : \ Program Files \ Git \ usr \ bin"이어야합니다.
— vladimir

1
set PATH = % PATH %; C : \ Program Files \ Git \ usr \ bin 완벽하게 작동합니다! 감사!
— v.babak

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
퍼티를 사용하려면 이것이 최선의 대답입니다. 올바른 개인 키를 변환해야합니다. 많은 감사합니다!
— johnzachary

1
User값을 확인하고 연결-> 데이터-> 자동 로그인 사용자 이름으로 퍼티에 제공 해야한다는 점을 언급 할 가치가 있습니다 . 내 VM에서 이름은 ubuntu이고로 로그인을 반복적으로 시도하고 실패했습니다 vagrant.
— perlyking

11

이제 다음 플러그인을 사용하여 퍼티를 사용하여 연결할 수도 있습니다.

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

그냥 실행

방랑 플러그인 설치 방랑 멀티 퍼티

putty.exe와 puttygen.exe가 PATH에 있는지 확인하십시오.

그럼 당신은 사용할 수 있습니다

방랑 퍼티

위에서 언급 한 실행 파일은 다음에서 구할 수 있습니다.

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;
    


2

이제 고통없는 Vagrant 업그레이드를 가능하게하는 훨씬 더 나은 솔루션이 있습니다. 패치 된 파일을 기반으로합니다.

vagrantfile의 첫 줄은 다음과 같아야합니다.

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

패치 된 vagrantfile_ssh 파일 (원본 이름은 ssh.rb )은 vagrantfile 과 동일한 디렉토리에 있어야 합니다. 이것은 우아하고 기능적입니다.

패치 된 vagrantfile_ssh를 다운로드하십시오 .


2
  1. 설치 힘내 배쉬을 (OpenSSH를 함께 제공뿐만 아니라 grep, find, perl, sed, 등;)

    Vagrant를 설치 한 경우 appwiz.cpl(AKA 프로그램 추가 / 제거) 및 Vagrant 설치를 엽니 다 Repair. 그러면 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는 그중 하나입니다.


Cygwin bin 디렉토리를 포함 시키려면 PATH를 사용해야합니다.set PATH=%PATH%;c:\cygwin\bin
— David Soroko

1

Windows 7 (다른 버전에서는 테스트되지 않음)

  1. "내 컴퓨터"를 마우스 오른쪽 버튼으로 클릭하고 속성을 클릭하십시오.
  2. 고급 시스템 설정을 클릭하십시오
  3. 환경 변수를 클릭하십시오
  4. "시스템 변수"아래의 두 번째 상자에서 아래로 스크롤하여 변수 "경로"를 클릭하고 편집을 클릭하십시오.
  5. 세미콜론 (없는 경우 세미콜론)을 추가하여 경로가 변수 값에 포함되어 있는지 확인하십시오. C : \ Program Files (x86) \ Git \ bin; (또는 ssh.exe 경로는 무엇이든)
  6. 확인> 확인> 확인 및 WINDOWS 다시 시작
  7. 당신은 유랑을 실행해야하지만 그 후 ssh는 영구적으로 작동해야합니다

다른 버전에 도움이 될 수있는 추가 정보 ... http://www.computerhope.com/issues/ch000549.htm


1

매우 간단합니다. Vagrant manager와 virtual box를 설치 한 후에는 Windows에 cygwin을 설치해보십시오. 그러나 cygwin을 설치하는 동안 시스템을 순환시킨 후 시스템이 cygwin에서 VM에 로그인 할 수 있도록하는 SSH 패키지, VIM 패키지를 선택하십시오 방랑자.


이것이 가장 좋은 대답입니다. Cygwin은 터미널과 같은 bash를 제공합니다. 대박!
— Neoraptor

1

Windows 용 에뮬레이터 터미널 cmder를 사용할 수 있습니다.

아래 단계에 따라 설치하십시오 :

  1. cmder.net에 액세스하십시오.
  2. 전체 다운로드를 클릭하십시오.
  3. 압축 해제
  4. (선택 사항) 자신의 실행 파일을 PATH에 주입 할 bin 폴더에 넣습니다.
  5. Cmder (Cmder.exe) 실행

여기에 이미지 설명을 입력하십시오

Windows의 터미널 cmder

이제 VM vagrant 설정에 필요한 명령을 실행하십시오. connect는 vagrant ssh 명령 만 실행하십시오. Watch cmder는 ssh 클라이언트 내장을 제공합니다.

이게 도움이 되길 바란다.


0

참고 : login as : 프롬프트가 나타나면 따옴표없이 사용자 이름으로 'vagrant'를 입력하십시오. – Snorkpete 6 월 28 일 12시 14:14

또는 Category-> Connection-> Rlogin으로 이동하여 'Auto-login username'필드를 'Vagrant'로 설정할 수 있습니다.

세션을 저장하십시오.


베스트의 출력을 확인하는 vagrant ssh-config확인이 있도록 되어 내 VM에, 우분투 / 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현재의 방랑 프로젝트 폴더에있는 (에 의해 예를 생성 한 개인 키와 공개 키이다 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 setup script 의 단순화 된 버전입니다 .

이제 vagrant sshWindows 상자에 들어갈 수 있습니다 .

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 아니요, 키를 생성 할 때 암호를 입력하지 마십시오.
— mixel

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 desktop app 을 사용해야 합니다 .

  2. git bash 데스크톱 앱을 엽니 다. vagrant up

  3. vagrant ssh


0

여기에 또 다른 솔루션이 있지만 탐색기를 테스트하기 위해 Windows 10의 가상 상자에만 해당합니다. ssh 사용자 : IEUser ssh 패스 : Passw0rd!


0

vagrant installation 폴더에는 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 statusvm이 실제로 실행 중일 때 vm이 모드 에 poweroff있거나 suspendedssh 연결을 강제하기 위해 모드 라고 말하는 상황에 유용 합니다.

위의 명령을 기억하거나 입력하지 않으려면 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 상자의 폴더에 vagrant ssh를 입력하면 올바르게 수행됩니다. ssh 키 등을 구성해야합니다. ssh 및 git cli / bin과 함께 제공됩니다.

이것의 장점은 실제로 powershell을 실행하고 여전히 모든 * nix 장점을 얻을 수 있다는 것입니다. 이것은 실제로 환경을 단순화하고 Vagrant와 다른 것들을 실행하는 데 도움이됩니다.

TL; DR Git cli를 다운로드하고 git / bin을 PATH에 추가하십시오. / bin에서 vim.bat를 해킹하여 Windows에서 작동합니다. cmd에서 ssh를 기본적으로 사용하십시오.


이것이 왜 지금 투표 되었습니까? 합리적인 솔루션이며 Windows에서 개발하고 싶다면 퍼티를 해킹하고 다른 명령을 해킹하는 것보다 훨씬 좋은 옵션입니다.
— Mark Liu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.