【Vagrant】scpコマンドでファイル転送する

コマンドプロンプト経由でローカルファイルを仮想マシンの方に転送したくなった。
(いつもはFTPソフトでやったり共有したりしてたけど飽きた)
どうやらscpコマンドを使うと送信できるらしいのでやってみることに。

環境

C:\>ver
Microsoft Windows [Version 10.0.18363.1082]

C:\>vagrant --version
Vagrant 2.2.9

$ cat /etc/redhat-release
CentOS Linux release 8.2.2004 (Core)

参考

Vagrantの仮想マシンにscpでファイル転送する - Qiita
1.OpenSSHの設定をする OpenSSHの設定を行う. vagrant ssh-configコマンドで出来る. $vagrant ssh-config このコマンドで得ることのできるファイルを,ssh.config...
scpコマンドでサーバー上のファイルorディレクトリをローカルに落としてくる - Qiita
基本 scpは、sshを使ってネットワーク・ホスト間でファイルを安全にコピーするためのコマンド。 scp -i ~/.ssh/secret.pem -r ec2-user@ec2-54-00-00-00.ap-northeas...

やったこと

ssh.configファイル作成とポート情報確認

scpでファイル転送するにはssh.configファイルとポート情報が必要らしいので確認する。

C:\> vagrant ssh-config
Host default
  HostName 127.0.0.1
  User vagrant
  Port 2222
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile C:/【vagrant upしたディレクトリ】/.vagrant/machines/default/virtualbox/private_key
  IdentitiesOnly yes
  LogLevel FATAL

ssh.configを作成

C:\>vagrant ssh-config > ssh.config

ホストOS(ローカル)→ゲストOS(仮想マシン)にファイル、フォルダを転送

ファイル、フォルダをそれぞれ転送してみる。
-P のあとのポート番号は、「vagrant ssh.config」実行時のポート番号を指定する(今回は2222)

ファイルを転送してみる(vagrantユーザーのパスワードを入力すれば転送される)

C:\>scp -P 2222 -F ssh.config  ./hoge.txt vagrant@localhost:/home/vagrant/
vagrant@localhost's password:
hoge.txt                                                                              100%    0     0.0KB/s   00:00

フォルダを転送してみる(HogeDirの中にhoge.txtがあるフォルダ)

C:\>scp -P 2222 -F ssh.config -r ./HogeDir vagrant@localhost:/home/vagrant/
vagrant@localhost's password:
hoge.txt                                                                              100%    0     0.0KB/s   00:00

ファイル、フォルダが転送されたか確認

sshでログインして、転送できたか確認してみる。

C:\>vagrant ssh
$ pwd
/home/vagrant
$ ls -l
合計 3896
drwxrwxr-x. 2 vagrant vagrant      22  9月 25 15:18 HogeDir
-rw-rw-r--. 1 vagrant vagrant       0  9月 25 15:25 hoge.txt
$ cd HogeDir
$ pwd
/home/vagrant/HogeDir
$ ls -l
合計 0
-rw-rw-r--. 1 vagrant vagrant 0  9月 25 15:26 hoge.txt

無事に転送されているようだ。

おわり。