先日の投稿で、ホスト/ゲスト間でクリップボードを共有し、相互にテキストデータのコピー&ペーストができるよう環境を整備しました。しかし「scp等ファイル転送」によるファイル共有の実現ついては、具体的な説明をはしょっていたので、補足します。今回はWinSCP(Windows上で動くグラフィカルなファイル転送(FTP/FTPS/SFTP/SCP)クライアントソフト)を使用して、ファイル共有を実現しようと思います。
WinSCPのファイル転送について
WinSCPは、FTP/FTPS/SFTP/SCP等、複数のファイル転送プロトコルをサポートしているようです。その内、SFTPとSCPが主な選択肢になるようなので、ネット情報等を参考にこれらの機能を下表にまとめました。
比較項目 | SFTP | SCP |
---|---|---|
経路 | SSH通信路 | SSH通信路 |
安全性 | SSH接続相当 | SSH接続相当 |
使用ポート | sshポート(デフォルト22番) | sshポート |
ベースのプロトコル | ftp | rcp |
パケット確認 | 有 | 無 |
転送速度 | パケット確認を行うため、SCPより遅い | SFTPより速い |
転送のレジューム | できる | できない |
転送容量 | 4GB超でも可能 | 4GBを超えるファイルを取り扱えない |
Linux側の設定 | OpenSSHの「/etc/ssh/sshd_config」に、 以下設定の追記が必要 「Subsystem sftp /usr/libexec/openssh/sftp-server」 | 「openssh-clients」のインストールが必要 |
表1より、以下の点で使い勝手の良い「SFTP」を選択しました。
- ファイル転送にレジューム機能がある
- 転送容量に4GBの制限がない
- Linux側の設定がOpenSSHの「/etc/ssh/sshd_config」ファイルの編集で完了する
WinSCPの導入準備
WinSCPを導入する環境について
今回「WinSCP」を導入した環境は、下表の通りです。
SFTP | ソフト/OS | バージョン |
---|---|---|
クライアント側 | WinSCP | バージョン 5.21.7 (ビルド 12963 2023-01-23) |
クライアント側 | Windows10 Pro | version 21H2, build 19044.2486, x86_64 |
サーバ側 | Red Hat Enterprise Linux | 8.4.0 (Hyper-V仮想端末), x86_64 |
WinSCPの取得
WinSCPの公式ページがありますが、窓の杜からのダウンロードがやり易く、公式と同等のインストーラが取得できるようなので、こちらからダウンロードしました。
ブラウザに該当URLを入力(図1黄枠上)窓の杜、WinSCPダウンロードページが表示されたら、無料マークがある(図1黄枠下)表示域の「窓の杜からダウンロード」(図1赤枠)をクリックすると、ダウンロードが始まりWinSCPインストーラが取得できます。
WinSCPのインストール
ダウンロードしたWinSCPインストーラを任意のフォルダに置き、ダブルクリックしてインストールを行います(表3)。
1 | ダウンロードしたSetup.exeファイルを、ダブルクリックします。 | |
2 | インストールモードは、推奨の全てのユーザ用にインストールを選択しました。 | |
3 | 使用許諾契約に同意を求められるので「許諾」ボタンを押下します。 | |
4 | インターフェイススタイルは、好みで選びます(後で変更可能)コマンダーを選択し、「次へ」ボタンを押下します。 | |
5 | インストール準備完了と表示されたら「インストール」ボタンを押下します。 | |
6 | 「WinSCPセットアップウィザードの完了」ウィザードが表示されたら「完了」ボタンを押下し、インストールを終了します。 |
RHEL8の設定
OpenSSHの設定ファイル「/etc/ssh/sshd_config」に SFTPを有効化する「Subsystem sftp /usr/libexec/openssh/sftp-server」記載があるか確認しました(図2黄枠)。
「Subsystem sftp /usr/libexec/openssh/sftp-server」と記載があり、SFTPサーバとして使用可能なようなので、このまま使います。自由なファイル転送が目的なので、WinSCPからの接続にはRHEL8インストール時に作成した管理者ユーザで行います。※本来は、SFTP専用ユーザを作成し、アクセス範囲も、ファイル転送用のフォルダ下に限定して運用するようです。
WinSCPの使い方
WinSCPの初期設定
インストールしたWinSCPの初回起動時、接続設定を促すウィザードが表示されるので、それに従って初期設定を行います(表4)。
1 | スタートメニューからWinSCPアイコンを選択し、WinSCRを起動します。 | |
2 | 「ログイン」ウィザードが表示されたら転送プロトコルに、「SFTP」を選択します。 | |
3 | SFTP接続に使うホスト名、ユーザ名を入力(右図赤枠)します。ポート番号は、SSHのポート番号を指定します(今回はデフォルト「22」のまま)。「保存」ボタンを押下します(右図青枠)。 | |
4 | 「セッションの保存名」ポップアップが表示されたら、任意のセッション保存名を入力します。デフォルトで「ユーザ名@ホスト名」と入力されるので、今回はそのまま使用し「OK」ボタンを押下します。 | |
5 | 入力した「セッションの保存名」で接続設定が保存されている(右図赤枠)事を確認し「ログイン」ボタンを押下します(右図青枠)。 | |
6 | 「パスワードの入力」ポップアップが表示されたら、パスワードを入力し「OK」ボタンを押下します。 | |
7 | 「警告」ダイアログが表示され「不明なサーバーに接続し、そのホスト鍵をキャッシュに追加しますか?」と表示されますが、ここは「はい」ボタンを押下で良いようです。詳細については調べていません。 | |
8 | WinSCPの作業画面が表示されます。右図左青枠が、Windows10端末のディレクトリが表示され、右図赤枠にRHEL8のディレクトリが表示されます。 |
ファイルの転送
WinSCPの作業画面が表示されたら、左側(クライアント側)にWindows10端末のディレクトリが表示(図3青枠)され、右側(サーバ側)にRHEL8のディレクトリが表示(図3赤枠)されます。それぞれ任意のフォルダに移動して、ファイル交換を行います。
作業画面のクライアント/サーバ側共、左上に上矢印アイコンが表示されている(図4緑枠)ので、これをクリックすると上階層に移動でき、表示された任意のフォルダアイコンをクリックすれば、下階層に移動できます。図4のクライアント側(図4青枠:C:\temp)/サーバ側(図4赤枠:/tmp/)でファイル交換を行います。
クライアント側で移動したいファイルを選択し、左側画面左上の「アップロード」をクリックして表示されるメニューからアップロードを選択(図5赤枠)又は、選択したファイルをサーバ側へドラッグアンドドロップすると、ファイルをアップロードできます(図5)。
「アップロード」画面が表示されたら、意図した操作か確認します。ファイル “test.txt” をリモートディレクトリ “/tmp/” へアップロードするのは、今回の意図通りなので「OK」を押下します(図6)。
クライアント側からサーバ側へ、対象ファイルがアップロードされる事を確認します(図7赤枠)。RHEL8へは、ログインユーザ所有のファイルとして上げられるようです(図7青枠)。
サーバ側で移動したいファイルを選択し、右側画面左上の「ダウンロード」をクリックして表示されるメニューからダウンロードを選択(図8赤枠)又は、選択したファイルをクライアント側へドラッグアンドドロップすると、ファイルをダウンロードできます(図8)。
「ダウンロード」画面が表示されたら、意図した操作か確認します。ファイル “lua_xKcnCc” をローカルディレクトリ “C:\temp\” へダウンロードするのは、今回の意図通りなので「OK」を押下します(図9)。
クライアント側からサーバ側へ、対象ファイルがアップロードされる事を確認します(図10赤枠)。Windows10へ、rootユーザ所有のファイルをダウンロードしました。特に問題なくダウンロードできました(図10青枠)。
メニュー「セッション」→「セッションを切断」を選択、セッションを切断します(図11赤枠)。
「SFTP」のセッションが切断され、サーバ側のディレクトリ表示が消えます。※「セッションを再接続」をクリックで、再接続されます(図12赤枠)
エクスプローラを開き、クライアント側の対象フォルダ(C:\temp)に RHEL8 のファイルが、格納されている事を確認します(図13赤枠)
ファイルを開き、サーバ側の対象フォルダ(/tmp)に Windows10 のファイルが、格納されている事を確認します(図14赤黄枠)。
その他基本操作
ここまででWinSCPによるファイル共有が有効だと確認できました。が、WinSCPは多機能なクライアントソフトなので、その他基本操作についても、以下に検証を行いました。
ファイル作成
メニュー[ファイル]→[新規]→[ファイル]または、ファイルを作成したい側のディレクトリ表示画面(ここではサーバ側)で、右クリックメニュー[新規]→[ファイル]を選択します(図15赤枠)。
編集画面が表示されるのでファイル名を入力し「OK」ボタンを押下(図16)
エディタが起動するので適当に入力し、ファイル保存します(図17)。
サーバ側のディレクトリ表示画面に新規ファイルが作成されることを確認します(図18)。
ファイル削除
削除するファイルを選択します。メニュー[ファイル]→[削除]または、右クリックメニュー[削除]を選択します(図19)
確認ダイアログが表示されたら、削除ファイル名を確認して「OK」を押下します(図20)。
対象ファイルが削除された事を確認します(図21)
ディレクトリ作成
メニュー[ファイル]→[新規]→[ディレクトリ]または、フォルダを作成したい側のディレクトリ表示画面(ここではサーバ側)で、右クリックメニュー[新規]→[ディレクトリ]を選択します(図22赤枠)。
フォルダの作成画面が表示されるのでフォルダ名を入力し「OK」ボタンを押下(図23)※属性設定については、特に設定せずデフォルトのままとしました。
サーバ側のディレクトリ表示画面に新規フォルダが作成されることを確認します(図24)。
ディレクトリ削除
削除するフォルダを選択します。メニュー[ファイル]→[削除]または、右クリックメニュー[削除]を選択します(図25)
確認ダイアログが表示されたら、削除フォルダ名を確認して「OK」を押下します(図26)。
対象フォルダが削除された事を確認します(図27)
操作エラー時の挙動
ルートディレクトリ(「 / 」)に移動して「root」(rootユーザー専用のディレクトリ)フォルダをダブルクリックします(図28赤枠)。
エラーダイアログが表示され、権限が無いため「/root」下のリスト取得できない旨、文言が表示されるので「OK」を押下します(図29)。
作業画面上、サーバ側のディレクトリ表示が切替わり「/root」下に移動したように表示されますが、権限が無く「/root」下のリストを取得できないため、何も表示されません(図30)。
セッションの切断、終了
メニュー[セッション]→[セッションを閉じる]を選択します(図31赤枠)。
セッションが切断され、ログインダイアログが表示されるので「閉じる」を押下します(図32青枠)。
メニュー[コマンド]→[終了]を選択、または「×」アイコンをクリックします(図33赤枠)
「SFTP(WunSCP)」と「RDP(リモートデスクトップ接続)」の併用
以上より、WinSCPを介したファイル共有は問題ないく「リモートデスクトップ接続」の不便を補完してくれそうなので、併用して使える事を確認します。
そもそも「SFTP(WunSCP)」と「RDP(リモートデスクトップ接続)」は、ポート番号が違う(デフォルト設定で使う場合SFTP:22番、RDP:3389番)ので使えそうです。また「SFTP」はポートが同じ「SSH」配下のサブシステムなので、親サービスの「SSH」の同時使用も試します。「SFTP」「RDP」「SSH」で同時にRHEL8へ接続し、同じホームディレクトリを表示しました(図34赤枠)。
図34の通り「SFTP(WunSCP)」と「RDP(リモートデスクトップ接続)」の併用は可能で、更に「SSH」も問題なく同時使用可能なことを確認できました。
参考資料
- けんちゃん「 L’7 Records.(2015-)」”もうFTPは時代遅れ!SFTP対応のFTPクライアントソフトおすすめ3選を徹底比較” 2023年1月31日閲覧
- アイティメディア株式会社「@IT」”軽快なscpか高機能なsftp、sshサーバに向いているのは?” 2023年1月31日閲覧
- WinSCP.net「WinSCP Official Site(2000-)」”Download” 2023年1月31日閲覧
- 株式会社インプレス「窓の杜」”WinSCP“ 2023年1月31日閲覧
- 株式会社ターン・アンド・フロンティア「TF Lab – クラウド開発記録」”SFTPユーザーを作成してファイル転送用に使用する” 2023年1月31日閲覧
コメント