VirtualBox上で動作してるCentOSにSFTPでファイル転送をする方法を紹介します。SFTPはSSH接続での暗号化された通信路を使って安全にファイルを送受信する為の仕組みで、ソフトウェア開発を安全に行うのに非常に便利です。

公開日時:2021/05/04 23:24 最終更新:2021/06/09 22:16   サーバー
CentOS SFTP SSH Vagrant VirtualBox

CentOSにSFTP接続でファイルを転送する

はじめに

この記事は以下の3つの記事、

で、VirtualBox上にCentOS 7がインストールされている事を前提としています。

SFTP接続を導入する理由

上記3記事は、ローカルPCで動作する仮想マシン上に、本番環境を想定した開発・検証環境を構築して効率的なソフトウェア開発が行えるようにする事を目的としています。

主な対象はWEBソフトウェア開発、特にPHPでのソフトウェア開発ですが、ほかの言語についても同様に行えます。

PHPは現在主流となっているLL(Lightweight Language)と呼ばれるプログラミング言語で、実行時に都度ソースコードをコンパイルして処理する『スクリプト言語』と呼ばれる物です。

この為、ソースコードに加えた修正が、次の実行時には即時反映されます。

ローカルPC上でWEBサーバが稼働している場合は、ローカルPCのストレージにあるソースコードを参照して処理を行うので特に問題は無いのですが、この記事はVirtualBoxという仮想環境上にある仮想マシンで動作しているCentOS 7でWEBサーバが稼働するため、ローカルPCで修正したソースコードをこの仮想マシン上に再配置する必要があります。

その際に、

1. ローカルでソースコードを修正

2. 仮想マシンに手動でアップロード

3. ブラウザで確認

といった手順を、ソフトウェア開発を行っている真っ最中に毎回手動でひたすら繰り返すのは非常に大変なため、ローカルでのソースコードの修正が即時的に仮想マシン上のソースコードに反映されるようにしたくなります。

現在はIDEと呼ばれる統合開発環境を使ってソフトウェア開発を行うのが当たり前になっていますが、多くのIDEがSFTP接続での自動ファイル同期機能を備えているので、これを利用して効率的なソフトウェア開発を行えるようにするのがこの記事の狙いです。

秘密鍵の確認

SFTP接続はSSHというプロトコルを使って暗号化された通信路を使ってファイルをやり取りする、非常に安全なファイル転送手段で、SSH File Transfer Protocolの略称です。

vagrantユーザーは既にSSH接続でVirtualBox上のCentOSにログインできるようになっており、ホストOS上に秘密鍵が存在します。

現在構築しているVagrant+VirtualBoxは自分だけが使う事を想定した開発環境であるため、このvagrantユーザーの秘密鍵を流用して効率よく開発環境を作成しようと思います。

まず、以下のコマンドでホストOS上のvagrantユーザー用秘密鍵の場所を調べます。

vagrant up
vagrant ssh-config

秘密鍵の場所

上記の

IdentityFile C:/Vagrant/centos7/.vagrant/machines/default/virtualbox/private_key

が、vagrantユーザーの秘密鍵の場所です。

余談

頻繁に目にするようになった暗号化という言葉ですが、この反対語は非常に多くの場合に復号化という間違った表現が使われています。正しくは [ 暗号化⇔復号 ] です。

号という文字には『合図、しるし』といった意味がありますが、つまり、情報の事をと定義しています。

暗号というのは『読めない状態にした情報』という意味で、この暗号にするのが、暗号です。つまりは『~にする』という動詞です。

その暗号を元の号に戻すのが復号です。つまりは『復元する』という動詞です。

暗号化に対してどうしても〇〇化という表現が使いたいのであれば、まず、明号という全く新しい日本語を定義して周知させた後、明号化と表現する必要があります。実に無駄ですね?

引用:平成27年春期問39 同じ鍵を使用する暗号化方式|基本情報技術者試験.com

基本情報技術者試験からの抜粋

基本情報技術者試験ですから、『復号化』等という明らかに間違った表現はもう使わないようにしましょう。

SCP・SFTPクライアントの導入

実際のソフトウェア開発ではプログラムコードを編集している統合開発環境(IDE)が自動でファイルをアップロードする事になりますが、ここではSFTP接続を確認する為、専用のクライアントアプリケーションを導入してみます。

WinSCPのダウンロードとインストール

WinSCPとは :: WinSCP

WinSCPはオープンソースでグラフィカルなWindows用のFTP、FTPS、SFTPクライアントです。

SCPプロトコルとはSecure Copyの略で、主にUnixやLinuxでSSHによる暗号化通信を使ってセキュリティ面で信頼性の高いファイル転送を行う為のプロトコルです。WinSCPはWindowでもこれを可能にしています。

下記リンクから、アプリケーションをダウンロードしてください。現在の最新安定版はWinSCP 5.17でした。

WinSCP :: Official Site :: Download

WinSCPダウンロードページ

ダウンロードされたWinSCPのインストーラー

インストーラーがダウンロードされたらダブルクリックし、ウィザードに従ってインストールを完了してください。

WinSCPのショートカット

WinSCPでのサイト設定

WinSCPのインストールが終わったので、仮想マシン上のゲストOSに接続する為の設定を行います。

WinSCPのウィンドウ

開いているログインダイアログに、仮想マシン上のゲストOSとvagrantユーザーの情報を入力します。このユーザーの認証は鍵認証となっている為、パスワードの入力は必要ありません。

サイト情報入力

設定▼』のプルダウンメニューから設定を選び、開いた高度なサイトの設定ダイアログでSSH > 認証をクリックしてタブを開き、認証条件の中にある『ツール▼』から『鍵ペアをPuTTYgenで生成』をクリックします。

机周り

PuTTY Key Generatorダイアログが開くので、Actionsの中から『Load』ボタンをクリックし、先ほど調べたvagrantユーザーの秘密鍵を読み込みます。

PuTTY Key Generator

秘密鍵の読み込み

秘密鍵が正しく読み込まれると、次のような画面になります。Key passphraseの欄に任意のパスフレーズを入力してください。

パスフレーズというのは一般に言うところのパスワードのような物ですが、秘密鍵自体がそもそも強力なパスワードのような物なので、本来は必要ありません。

パスフレーズは、万が一秘密鍵が流出してしまった際に、新たな鍵を作成してサーバに適用して古い鍵を無効にするまでの時間稼ぎの為に設定します。ここでは適当な覚えやすいフレーズを入力してください。

パスフレーズを入力し終えたら、『Save private key』ボタンをクリックしてください。.ppk形式の秘密鍵の保存場所を聞かれます。下記ではWindowsのユーザーのドキュメントフォルダを選んでいますが、自分の扱いやすい任意の場所で構いません。

.ppkファイルの生成

.ppkの保存ディレクトリ指定

『保存』ボタンをクリックすると.ppkファイルが保存されます。 PuTTY Key Generatorダイアログを閉じてください。高度なサイトの設定ダイアログに戻り、秘密鍵に先ほど作成した.ppkファイルへのディレクトリパスが設定されています。

併せて『エージェントの転送を許可する』にチェックを入れて『OK』をクリックしてください。

机周り

ログインダイアログに戻ってきます。『保存▼』ボタンをクリックして、サイト設定を保存します。

机周り

セッションの保存名指定

サイト設定が登録されました。

サイト設定登録完了

ログイン▼』をクリックして、実際にCentOSにSFTP接続してみましょう。

初めて接続するサーバの為、信頼できるサーバかどうか確認するための警告が表示されます。サイト情報の登録でIPアドレスを間違えてさえいなければ、『はい▼』をクリックして接続サーバ情報をキャッシュに追加してください。以後、表示されなくなります。

接続警告

接続を許可すると、PuTTY形式の秘密鍵を生成する際に設定したパスフレーズが聞かれます。正しくパスフレーズを入力してください。

パスフレーズ

VirtualBox上のCentOSにSFTPでログイン出来ました。

ログイン完了

実際にSFTPで任意のファイルをアップロードしてテストしてみてください。

まとめ

以上で、SFTP接続によるファイル転送環境の構築は終わりです。

記事リンク