【Vagrant】仮想マシンにファイルを転送する方法

仮想マシンにファイルを転送する方法

  1. Vagrantfileがあるフォルダに移動する
  2. OpenSSHの設定をする
  3. scpコマンドで転送する
C:\work>cd C:\work\vagrant\bionic64
C:\work\vagrant\bionic64>vagrant ssh-config > ssh.config
C:\work\vagrant\bionic64>scp -F ssh.config sample.txt vagrant@default:~
sample.txt    100%    3     2.8KB/s   00:00

コマンドプロンプトとGitBashは上記の方法でOKだが、PowerShellだと上手くいかない。

PowerShell文字コードを指定する

PowerShellの場合、リダイレクトするとUTF-16エンコードされる。

UTF-16エンコードされたファイルでscpすると以下のエラーになる。

PS C:\work\vagrant\bionic64> vagrant ssh-config > ssh.config
PS C:\work\vagrant\bionic64> scp -F ssh.config sample.txt vagrant@default:~
ssh.config: line 1: Bad configuration option: \377\376h
ssh.config: terminating, 1 bad configuration options
lost connection

UTF-8エンコードすれば解消する。

PS C:\work\vagrant\bionic64> vagrant ssh-config | Out-File -Encoding utf8 ssh.config
PS C:\work\vagrant\bionic64> scp -F ssh.config sample.txt vagrant@default:~
sample.txt    100%    3     1.0KB/s   00:00

参考文献

qiita.com

github.com

duax.hatenablog.com