SSH đến hộp Vagrant trong Windows?


172

Tôi đang sử dụng Vagrant để khởi động VirtualBox VM trong windows. Trong các nền tảng khác, tôi chỉ có thể

$ vagrant ssh

để kết nối với VM.

Làm thế nào để tôi kết nối với hộp Vagrant này trong windows?

Cách được đề xuất trong tài liệu Vagrant để sử dụng PuTTy cũng không hoạt động:

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


2
Hướng dẫn lớn về điều này, bao gồm cách SSH vào hộp Vagrant trong Windows 7/8
Sliq

11
Đây không phải là một vấn đề nữa. Nếu bạn có ssh.exe trong đường dẫn của mình (ví dụ: c: \ Program Files \ git \ bin), thì 'vagrant ssh' hoạt động.
Omri Spector

1
FYI Vagrant không bao gồm 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. Ship ssh.exe theo mặc định trong trình cài đặt Windows ... nó làm tôi bối rối
KCD

Câu trả lời:


243

Tôi sử dụng PuTTY để kết nối với các hộp Vagrant của mình trên Windows7.

Hãy chắc chắn rằng bạn

  • chuyển đổi %USERPROFILE%\.vagrant.d\insecure_private_keysang .ppk bằng PuTTYGen
  • sử dụng khóa .ppk trong phiên PuTTY của bạn - được định cấu hình trong Kết nối> SSH> Auth> Tệp khóa riêng
  • sử dụng máy chủ 127.0.0.1
  • sử dụng cổng 2222 thay vì 22
  • bạn có thể đặt tên người dùng mặc định (vagrant) trong Kết nối> SSH> Auth> Khóa riêng để xác thực

28
cũng lưu ý: khi thông báo đăng nhập as: xuất hiện, hãy nhập 'vagrant' làm tên người dùng (không có dấu ngoặc kép).
snorkpete

5
Và sau đó làm điều đó cho mọi VM trong Vagrant. Bạn biết đấy, Vagrant hoạt động với nhiều VM. Vì vậy, chỉ cần sử dụng giải pháp thích hợp, không phải cách giải quyết: có câu trả lời của tôi dưới đây. Bản vá nhỏ trong Vagrant.
Michael Field

20
Bạn có thể đặt tên người dùng mặc định bên dưới Connection > Data > Auto-login usernamevà cài đặt PPK ở dướiConnection > SSH > Auth > Private key for authentication
mở

1
Nếu bạn thích bảo mật các khóa riêng tư của mình bằng mật khẩu, về lâu dài có thể dễ dàng hơn để sử dụng ứng dụng pageant.exe khi khởi động, tải tệp ppk của bạn vào đó. Sau đó, bạn nhập mật khẩu của mình để tham gia cuộc thi một lần và bạn có thể đăng nhập mà không cần phải chỉ định mật khẩu ppk trong thiết bị đầu cuối putty mỗi lần.
Larry Silverman

8
Bạn có thể sử dụng vagrant ssh-configđể biết những tùy chọn để cung cấp cho putty.
ibizaman

121

Bạn phải một số mã Vagrant bằng cách sửa đổi chỉ một tệp , ssh.rb.

Tất cả thông tin có tại đây: https://gist.github.com/2843680

vagrant ssh bây giờ cũng sẽ hoạt động trong Windows, giống như trong Linux.


EDIT : Trong các phiên bản mới hơn, điều này trở nên không cần thiết. Bạn vẫn phải thêm đường dẫn đến Biến ssh.execủa mìnhPATH :

Tìm kiếm ssh.exe trên máy tính của bạn, sao chép Đường dẫn (nghĩa là C:\Program Files (x86)\Git\bin), mở Tùy chọn hệ thống, tìm Cài đặt biến môi trường , nhấp vào Biến đường dẫn, thêm đường dẫn, tách các đường dẫn hiện có bằng cách sử dụng ;.


1
Vui lòng nhận xét về yêu cầu kéo Github cho vấn đề nếu bạn sử dụng công việc này, đây là lúc nó được hợp nhất. github.com/mitchellh/vagrant/pull/933
Cá heo Cory

4
Điều này dường như đã được sáp nhập khoảng ba tháng trước. Nó chắc chắn tồn tại trong phiên bản 1.2.2.
Johann

Điều này vẫn còn cần thiết hoặc được vá trong các dists Vagrant gần đây?
Alex

2
@Alex Nó chắc chắn được vá vào các phiên bản Vagrant gần đây. Tôi đã thử nghiệm và ghi lại ở đây: robertpate.net/blog/2013/ từ
robertpateii

1
Nhanh chóng đặt đường dẫn đến git OpenSSH của bạn, mở PowerShell và chạy: [Environment]::SetEnvironmentVariable("Path", "$env:Path;c:\Program Files (x86)\Git\bin\", "User")
Janusz Skonieczny

96

Một tùy chọn khác sử dụng nhị phân git:

  1. Cài đặt git: http://git-scm.com/doad/win
  2. Menu Bắt đầu> cmd (shift + enter để đi với tư cách Quản trị viên)
  3. set PATH=%PATH%;C:\Program Files\Git\usr\bin
  4. vagrant ssh

Hi vọng điêu nay co ich :)

Chỉ là phần thưởng sau nhiều tháng sử dụng trên Windows: sử dụng Bảng điều khiển thay vì thiết bị đầu cuối Win, vì vậy bạn luôn có thể mở tab thiết bị đầu cuối mới với bộ PATH (định cấu hình tùy chọn)


Ai đó nêu lên câu trả lời này. Đã cố gắng tìm hiểu làm thế nào tôi làm việc này, bây giờ tôi biết! Cảm ơn
RadiantHex

Điều này làm việc tốt cho tôi. Khi tôi có GIT, nó hoạt động sạch hơn rất nhiều sau đó chuyển sang Putty vì bạn có thể sử dụng lại cùng một cửa sổ giao diện điều khiển.
Bartvds

2
Cảm ơn, nhưng bây giờ tôi sử dụng conemu . Nó tương tự nhưng linh hoạt hơn Console. Tôi có nó gói nhiều bảng điều khiển, như cmd.exe, git bash và putty với các bí danh và các công cụ ưa thích khác.
Bartvds

4
đối với Git 2.5.0 PATH phải là "C: \ Chương trình tập tin \ Git \ usr \ bin".
vladimir

1
đặt PATH =% PATH%; C: \ Tệp chương trình \ Git \ usr \ bin Hoạt động hoàn hảo! Cảm ơn!
v.babak

72

Tải xuống Putty: http://www.chiark.greenend.org.uk/~sgtatham/putty/

Sử dụng putty.exe:

GUI Putty:

HostName: 127.0.0.1
Port: 2222

Khi bạn kết nối (Màn hình đầu cuối):

User: vagrant
Passwd: vagrant

Trước khi bạn cố gắng kết nối, hãy xác minh VM của bạn bằng cmd.exe:

 vagrant status

Nếu nó không sử dụng:

vagrant up

1
Điều này cho thấy hoàn hảo làm thế nào để không bị lạc trong lời nói. Thật tuyệt vời, cảm ơn!
appoll

31

Các câu trả lời được chấp nhận là thực sự hữu ích tuy nhiên nó có thể xảy ra rằng thay vì chủ yếu sau:

%USERPROFILE%\.vagrant.d\insecure_private_key

một khóa khác phải được chuyển đổi sang định dạng của Putty:

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

Trường hợp {vagrant_machine_root}một thư mục với Vagrantfilemáy chúng ta muốn kết nối với Putty.

Như @ibizaman đã đề cập sử dụng vagrant ssh-configđể kiểm tra khóa nào được sử dụng bởi vagrant:

$ 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
Nếu bạn muốn sử dụng Putty, thì đây là câu trả lời tốt nhất. Bạn phải chuyển đổi khóa riêng đúng. Cảm ơn nhiều!
johnzachary

1
Đáng nói là bạn nên kiểm tra Usergiá trị và đảm bảo rằng bạn cung cấp nó cho Putty trong Kết nối-> Dữ liệu-> Tự động đăng nhập tên người dùng. Trên máy ảo của tôi, tên là ubuntuvà tôi đã nhiều lần thử, và không đăng nhập được vagrant.
mỗi


6

Hoặc

  1. Trong cmdbảng điều khiển của bạn gõ như sau:

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

HOẶC LÀ

  1. Đặt vĩnh viễn đường dẫn trong các biến môi trường của hệ thống của bạn:

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

4

Có một gói OpenSSH dành cho Windows, về cơ bản là Cygwin. Nó có msi-Installer và (sau khi thiết lập đường dẫn của bạn phù hợp) hoạt động với "vsagrant ssh":

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


Đây là giải pháp tốt nhất cho tôi. Liên kết bạn cung cấp chưa được cập nhật kể từ năm 2010. Có một phiên bản mới hơn có sẵn tại mls-software.com/opensshd.html
icc97

2

Bây giờ tôi có một giải pháp tốt hơn nhiều cho phép nâng cấp Vagrant không đau. Nó dựa trên tập tin vá.

Dòng đầu tiên của vagrantfile phải là:

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

Và tệp vagrantfile_ssh được vá (tên gốc là ssh.rb ) nên tồn tại trong cùng thư mục với vagrantfile . Đây là cả thanh lịch và chức năng.

Tải về vagrantfile_ssh đã vá .


2
  1. Cài đặt Git Bash (Đi kèm với OpenSSH, cũng như grep, find, perl, sed, vv .;)

    Nếu bạn đã cài đặt Vagrant, hãy mở appwiz.cpl(AKA Add / Remove Programs) và Repaircài đặt Vagrant. Điều này sẽ làm cho vagrant thêm chính nó vào đường dẫn git-bash của bạn.

  2. Mở Git Bash (Qua menu bắt đầu)

  3. cd ~/vagrant/mybox vào thư mục hộp mơ hồ của bạn và vagrant ssh

2

Tôi đã làm như được đề xuất ở trên nhưng chỉ thay đổi biến môi trường trên dòng lệnh với PATH =% PATH%; "C: \ Chương trình tệp \ git \ usr \ bin"

Điều này đã không làm việc. Nhưng khi tôi sửa đổi biến Môi trường thông qua Cài đặt Windows và sau đó bắt đầu một dấu nhắc lệnh mới, nó đã hoạt động lần đầu tiên!


1

Cá nhân, tôi chỉ sử dụng Cygwin . Cho phép bạn sử dụng nhiều lệnh * nix phổ biến trong Windows. SSH là một trong số họ.


Bạn sẽ cần phải sửa PATH của mình để bao gồm thư mục bin Cygwin, đại loại nhưset PATH=%PATH%;c:\cygwin\bin
David Soroko

1

Windows 7 (không được thử nghiệm trên các phiên bản khác)

  1. Nhấp chuột phải vào "My Computer" và nhấp vào thuộc tính
  2. Nhấp vào Cài đặt hệ thống nâng cao
  3. Nhấp vào Biến môi trường
  4. Trong hộp thứ hai bên dưới "Biến hệ thống" cuộn xuống và nhấp vào biến "Đường dẫn" và nhấp vào EDIT
  5. Đảm bảo đường dẫn được bao gồm trong Giá trị biến bằng cách nối thêm (dấu chấm phẩy nếu không có ở đó và) C: \ Program Files (x86) \ Git \ bin; (hoặc bất cứ điều gì là đường dẫn đến ssh.exe của bạn)
  6. OK> OK> OK và cửa sổ RESTART
  7. Bạn sẽ phải chạy lang thang lên nhưng sau đó ssh mơ hồ sẽ hoạt động vĩnh viễn

Thông tin thêm có thể giúp với các phiên bản khác ... http://www.computerhope.com/issues/ch000549.htm


1

Rất đơn giản, khi bạn cài đặt trình quản lý Vagrant và hộp ảo, hãy thử cài đặt cygwin trên windows nhưng trong khi cài đặt cygwin, hãy đảm bảo chọn gói SSH, gói VIM sẽ cho phép hệ thống của bạn đăng nhập vào máy ảo của bạn từ cygwin sau khi quay vòng máy của bạn thông qua mơ hồ.


Đây là câu trả lời tốt nhất ở đây. Cygwin sẽ cung cấp cho bạn một bash như thiết bị đầu cuối để làm việc với. Tuyệt vời!
Neoraptor

1

bạn có thể sử dụng trình mô phỏng thiết bị đầu cuối cmder cho windows.

Thực hiện theo các bước dưới đây để cài đặt:

  1. Truy cập cmder.net;
  2. Nhấp vào Tải xuống đầy đủ;
  3. Giải nén
  4. (tùy chọn) Đặt các tệp thực thi của riêng bạn vào thư mục bin sẽ được đưa vào PATH của bạn.
  5. Chạy Cmder (Cmder.exe)

nhập mô tả hình ảnh ở đây

Thiết bị đầu cuối cmder trên Windows

Bây giờ thực thi lệnh cần thiết cho cài đặt VM vagrant, để kết nối chỉ thực hiện lệnh vagrant ssh; Xem cmder cung cấp ssh khách nhúng.

Tôi hi vọng cái này giúp được.


0

cũng lưu ý: khi thông báo đăng nhập as: xuất hiện, hãy nhập 'vagrant' làm tên người dùng (không có dấu ngoặc kép). - Lặn biển ngày 28 tháng 6 năm 12 lúc 14:14

Hoặc bạn có thể truy cập Danh mục-> Kết nối-> Rlogin và đặt trường 'Tên người dùng đăng nhập tự động' thành 'Vagrant'.

Lưu phiên.


Tốt nhất để kiểm tra đầu ra của vagrant ssh-configđể đảm bảo đây tên người dùng chính xác: trên VM của tôi, ubfox / xenial64, đó làubuntu
mỗi

0

Tôi sử dụng vagrant sshlệnh với git sshtrên windows 7, 8.1 và Windows 10.

Để cài đặt chỉ tải xuống msysgit từ trang dự án msysgit .

Và để chạy ssh.exechỉ bao gồm các bin folterbiến môi trường của windows hoặc cài đặt git từ trang Tải xuống Git và sao chép msysgit bin folter vào C:\Program Files\Git\bin.


0

Thêm các dòng sau vào 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

trong đó vagrant_rsavagrant_rsa.publà khóa riêng và khóa chung nằm trong thư mục dự án mơ hồ hiện tại (và được tạo ví dụ bởi ssh-keygen -t rsa -C "your@email.here") và openssh.ps1là:

$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"

đó là phiên bản đơn giản hóa của tập lệnh thiết lập joefitzgerald / packer-windows openssh .

Bây giờ bạn có thể vagrant sshvào hộp Windows.

Đối với những người sử dụng vagrant-libvirt, bạn có thể muốn chuyển tiếp một số cổng như RDP từ máy chủ sang máy khách. vagrant-libvirt sử dụng ssh để chuyển tiếp cổng, do đó bạn cần thiết lập ssh trên Windows như trong hướng dẫn ở trên và sau đó bạn sẽ có thể chuyển tiếp các cổng như:

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

Không làm việc cho tôi. Tôi có cần mật khẩu khi chạy ssh-keygen không?
Bãi biển Jared

@JaredBeach Không, không nhập cụm mật khẩu khi tạo khóa.
mixel

0

Tôi cũng đã gặp vấn đề tương tự trước đây.

  1. Trong thư mục homestead, sử dụng bash init.sh.

  2. Nếu bạn không có thư mục .ssh D:/Users/your username/, bạn cần lấy một cặp khóa ssh ssh-keygen -t rsa -C "you@homestead".

  3. Chỉnh sửa 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. Bạn cần sử dụng ứng dụng git bash desktop .

  2. Mở ứng dụng máy tính để bàn git bash. vagrant up

  3. vagrant ssh


0

Một giải pháp khác ở đây nhưng chỉ dành cho hộp ảo của windows 10 để thử nghiệm explorer. Người dùng ssh: IEUser ssh pass: Passw0rd!


0

Thư mục cài đặt vagrant chứa ssh.exe hoạt động như ssh (1) trên linux (có cùng cờ / đối số).

Để xem tất cả các đối số được sử dụng, bạn có thể chạy vagrant ssh-confighoặc vagrant ssh --debugcho đầu ra dài dòng hơn.

từ 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"

Điều này hữu ích là các tình huống vagrant statuscho biết vm của bạn đang ở poweroffhoặc ở suspendedchế độ khi bạn tích cực thực sự đang chạy, để buộc kết nối ssh.

Nếu bạn không muốn nhớ / gõ lệnh trên, hãy viết nó trong một vagrant.ps1tệp để bạn có thể thực thi nó từ quyền hạn của mình bằng cách sử dụng .\vagrant_ssh.ps1


0

Một thay thế tốt cho PuTTY là trình giả lập thiết bị đầu cuối Mintty . Nó có nhiều tùy chọn cấu hình hơn PuTTY.


-1

Tôi nghĩ rằng một câu trả lời tốt hơn cho câu hỏi này sẽ là như sau:

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

Eric đã viết một bài viết hay về cách biến máy tính windows của bạn thành môi trường Linux. Ngay cả với các bản hack để Vim hoạt động tự nhiên trong cmd.

Nếu bạn chạy qua hướng dẫn này, về cơ bản giúp bạn cài đặt git cli và với một số hack, bạn có thể đưa ra một dấu nhắc lệnh và gõ ssh vagrant trong khi trong thư mục của hộp vagrant của bạn và nó sẽ thực hiện đúng cách, không cần cấu hình các phím ssh, vv Tất cả những gì đi kèm với ssh và git cli / bin.

Sức mạnh của điều này là sau đó bạn thực sự có thể chạy powershell và vẫn nhận được tất cả lòng tốt * nix. Điều này thực sự đơn giản hóa môi trường của bạn và giúp chạy Vagrant và những thứ khác.

TL; DR Tải xuống Git cli và thêm git / bin vào PATH. Hack vim.bat trong / bin để làm việc cho windows. Sử dụng ssh tự nhiên trong cmd.


Tại sao điều này được bình chọn bây giờ? Đó là một giải pháp hợp lý và nếu bạn muốn phát triển trong Windows, đây là một lựa chọn tuyệt vời, tốt hơn nhiều so với việc hack putty của bạn, hack các lệnh khác của bạn.
Mark Liu
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.