大東WebサーバへのSFTPのための鍵ペアの生成と設定

クラウドを経由せずに学内および学外からFTPソフトウエアを使って、学内のパソコンあるいは学外にある自分のパソコンのファイルを直接的に大東Webサーバに送受信することができる。 そのために利用するのが ファイル転送ソフトウエア(通称、FTPソフトウエア)だ。

Firefox fireFTP

ここでは、FTPソフトウエアとして、ブラウザ Firefox のアドオンFireFTPを紹介しよう。 OSの違いによらずに全く同じように簡単に利用できること、津田のWindows/MacOSの双方にインストールされているので以下のインストールや利用の実際を確認するのにも都合がよい。 自宅で利用するために、まず自分のパソコンにFireFoxをインストールしよう。

FireFTPのインストール

firefox_addon

FireFoxを起動して、FireFTPからから[今すぐダウンロード]で終了である。

FireFoxを一旦終了してから再起動すれば使えるようになる。 念のために、インストールされたかを確認しておこう。 図のように、[ツール]から[アドオン]を選択して、FireFTPが表示されているならOKだ。


学内編

学内のパソコンから大東Webサーバへのファイル送受信はFTPソフトウエアの「FTPモード」を使う。

FireFTPの起動と大東WebサーバへのFTP設定

  1. fireftp_start 右図のように位、Firefoxの[ツール]/[Web開発]からFireFTPを選択するとFirefox内に新たにFireFTPのページが開く。 初めてFireFTPを利用する場合には、接続先のホスト情報は何も設定されていない。


  2. fireftp_start FireFTPのページの左上隅から[アカウントの作成]を選択する。
    右図([クリックで拡大])のように、「アカウントの管理」の[メイン]では、「ホスト」欄に接続先のホスト名 www.st.daito.ac.jp を、「ユーザ名」と「パスワード」に正しく入力する。
  3. fireftp_account_ftp 次に右図([クリックで拡大])のように、「アカウントの管理」の[接続]で「セキュリティ」で[なし]を選択して、[OK]を押す。
    これで準備はおしまい。

FTP接続とファイル転送

下の図は、[www.st.daito.ac.jp] を選択して「接続ボタン」を押した時の様子である。 FireFTP_connect

FireFTPの左ペインはローカルホスト(自分のパソコンのファイル構成)、右ペインにはリモートホスト(大東Webサーバ)内のフォルダやファイル構成が表示されることを確認しよう。 フォルダ public_html があることに注意する。 public_html は大東Webサーバ経由で公開するためのファイル群を置くWeb専用フォルダである。

右ボタンfireftp_rightまたは左ボタン fireftp_leftを選んでファイル転送する。

アップロードfireftp_right
ローカルからリモートへ(アップロード)のためには、ローカルのアップロードのためのファイルまたはフォルダを選択し、アップロード先のリモートでのフォルダを選択してから、右向矢印ボタン。
ダウンロードfireftp_left
リモートからローカルへ(ダウンロード)のためには、ダウンロードするリモートのファイルまたはフォルダを選択肢、ダウンロード先のローカルでのフィルだを選択してから、左向矢印ボタン。

学外からのFTPのための準備

大東ネットワークにあるWebサーバホストに、学外にあるローカルホストから大東Webサーバーにコンテンツを転送するためには、通常のFTPではなくセキュアFTP(SFTP)による方法を使わねばならない。 このためには以下のようにして、SFTPのための鍵ペアの生成と設定をしなければならない。

FireFoxの[ツール]/[アドオン])で、FireFTPの設定/[全般]の「ファイル表示」で「隠しファイルを表示」にチェックを入れる。 全ての作業が終われば、チャックを外しておこう。

SFTPによるファイル転送までの手続き概要

SFTPのためには、次のような手順を踏む。 鍵の作成は学内で行うことを前提(この方が無難だ)に、その考え方と手順を説明する。 ユーザが使うローカルホスト側におく秘密鍵(private key)と、大東ネットワークにあるWebサーバー側におく(秘密鍵に対応した)公開鍵(public key)との一対の鍵を生成する。 鍵の生成は、学内のコンピュータを使って行ってもよいが、学内で作成する方が初心者にやさしいはずだ(以下の手順を考えを理解すれば、学外でも鍵を生成してもよいのだが、Windowsでは鍵生成ツールをまずインストールしなければならないので面倒だ)。

学内で作成した公開鍵は、クラウドファイルサービス、たとえばDropboxなどのを経由して「自分の学外ホストに秘密鍵」をダウンロードする(USBメモリで持ち歩くようなことは勧めません)。
SFTP
  1. 学内ホスト(MacOSが便利)で一対の鍵(公開鍵と秘密鍵)を生成する。 以下のいずれかの段階で、大東Webサーバ側に置く公開鍵のファイル名 を authorized_keys2 に変更する。
  2. Webサーバ www.st.daito.ac.jp 内に用意されているユーザ領域内にフォルダ .ssh を作成し(ただし、フォルダ public_html の外側)、そこに学内ホストから公開鍵をFTPしてする。
  3. MacOSで生成した秘密鍵(と公開鍵とのペア) はそのまま置いておく。 学内にある(または自分の)Windowsパソコンには、クラウドサービス経由で秘密鍵をダウンロードし、消去することのない安全なフォルダ内に配置する。 ただし、秘密鍵をメール添付するなどはたいへん危険で推奨しない。
  4. 以下で紹介するFireFTPでのSFTP設定(と秘密鍵の場所指定)を行った後に、学内ホストと大東Webサーバとの間でSFTPを使うファイル転送を行う。
  5. 学外にあるパソコンについても、クラウドサービス経由で秘密鍵(と公開鍵とのペアも)ダウンロードし、消去することのない安全なフォルダ内に配置する。 上記同様の設定の後に、学内ホストと大東Webサーバとの間でSFTPを使うファイル転送を行う。

ひとたび、公開鍵を大東Webサーバに、対応する秘密鍵を学外(および学内)のホストに置けば、SFTPを使ってインターネット経由でもWebコンテンツの安全な追加・更新が可能になる。 以下、順を追って以上の手続きを説明する。

MacOSで鍵ペアを生成する(DSAとRSAの2方式いずれかで)

大東ネットとのSFTPを行うためには、次のRSA方式またはDSA方式のどちらかの暗号鍵ペアを生成する必要がある:

SFTPに必要なペアになった秘密鍵と公開鍵を生成するために、以下ではMac OSを使う例を紹介する。 MacOS Xでは、Open SSHが標準でインストールされているため鍵の生成は以下のようにコマンドを利用するだけで非常に簡単だ(もちろん、MacOSで生成した秘密鍵をWindows内に置いても構わない)。

Windowsの場合では、鍵生成ソフトウエア、たとえばWinSCPを自分のパソコンに用意しなければならないので、準備や使い方が面倒)。

ssh-genkeygenでRSA鍵ペアを生成

  1. 秘密にしておくパスフレーズ(pass phrase)を考えておく(必ず入力する)。 キー入力は表示されないので大文字小文字の区別など、慎重に慎重を重ねる。 (特に字数制限はないが、絶対に忘れてしまわないこと。ログインで使っているパスワードでもよい)。 再発行のためには、全ての作業を、学内と学外とで再びやり直さねばならない。
  2. [アプリケーション][ユーティリティ]にある「ターミナル」を起動し、プロンプト $ (個々のホストのプロンプトに読み替える)に次のようにコマンド ssh-keygen をオプション -b 2048 -t rsa をつけて鍵を生成する。
  3. その途中で、パスフレーズを訊いてくるので、文字列を入力する。 鍵の生成にはしばらく時間がかかる。

以下が、鍵の生成のセッションの様子である。

$ ssh-keygen  -b 2048 -t rsa     <----鍵生成コマンドの入力
Generating public/private rsa key pair.
Enter file in which to save the key (/home/ユーザ名/mac/.ssh/id_rsa): <--このままエンターを押す
Enter passphrase (empty for no passphrase):  <-- 考えておいたパスフレーズを入力
Enter same passphrase again:                 <-- 再度パスフレーズを入力
Your identification has been saved in /home/ユーザ名/mac/.ssh/id_rsa. <---rsa秘密鍵
Your public key has been saved in /home/ユーザ名/mac/.ssh/id_rsa.pub. <---rsa公開鍵
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx  ユーザ名@ホスト名.st.daito.ac.jp
$  <-- プロンプトが戻って、鍵が生成されたことがわかる

ssh-genkeygenでDSA鍵ペアを生成

  1. 秘密にしておくパスフレーズ(pass phrase)を考えておく(必ず入力する)。 キー入力は表示されないので大文字小文字の区別など、慎重に慎重を重ねる。 (特に字数制限はないが、絶対に忘れてしまわないこと。ログインで使っているパスワードでもよい)。 再発行するには、全ての作業を、学内と学外とで再びやり直さねばならない。
  2. [アプリケーション][ユーティリティ]にある「ターミナル」を起動し、プロンプト $ (個々のホストのプロンプトに読み替える)に次のようにコマンド ssh-keygen をオプション -t dsa をつけて鍵を生成する。
  3. その途中で、パスフレーズを訊いてくるので、文字列を入力する。 鍵の生成にはしばらく時間がかかる。

ようするに、以下が鍵の生成のセッションの様子である。

$ ssh-keygen  -t dsa     <----鍵生成コマンドの入力
Generating public/private dsa key pair.
Enter file in which to save the key (/home/ユーザ名/mac/.ssh/id_dsa): <--このままエンターを押す
Enter passphrase (empty for no passphrase):  <-- 考えておいたパスフレーズを入力
Enter same passphrase again:                 <-- 再度パスフレーズを入力
Your identification has been saved in /home/ユーザ名/mac/.ssh/id_pra. <---rsa秘密鍵
Your public key has been saved in /home/ユーザ名/mac/.ssh/id_rsa.pub. <---ras公開鍵
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx  ユーザ名@ホスト名.st.daito.ac.jp
$  <-- プロンプトが戻って、鍵が生成されたことがわかる

生成した鍵ペアの確認と公開鍵の名称変更

RSA方式またはDAS方式の生成を以上のように行ったとすると、ユーザ領域(ホームディレクトリ)内に特別な名前 .ssh がついたフォルダ(ドット(.)が付いていることに注意)内に

id_rsa          <--rsa秘密鍵
id_rsa.pub      <--rsa公開鍵
または
id_dsa          <--dsa秘密鍵
id_dsa.pub      <--dsa公開鍵

が生成されているはずだ。

このことを次のようにして確かめてみよう。

% cd  <----cd につづいてエンター
% ls .ssh  <----.ssh内のファイルを表示(ls と .ssh 間は半角空白。つづいてエンター)
id_ras        id_ras.pub (または/さらに) id_dsa        id_dsa.pub <----その結果
参考:
MacOSで生成されたRSAまたはDSA方式の鍵ペア(秘密鍵および公開鍵)は次のディレクトリ(フォルダ)
/home/ユーザ名/mac/.ssh/
に格納されている(ドット (.) がついている。通常ドットの着いたファイルやフォルダは通常は見えない不可視ファイル/ファイルだ)。

生成した2つの鍵ファイルの属性をして確認して置こう(ユーザ名を s14159876 としている)。ファイルサイズは違うかもしれない

% ls -al
.......
drwx------   12 s14159876  staff      408  2  5 14:47 .ssh <----フォルダ .ssh は userのみrwx[700]
.......
% cd
% ls -l .ssh
-rw-------  1 s14159876  staff  1264  5  7  2013 id_rsa <----ファイル id_dsa は userのみrw[600]
-rw-------  1 s14159876  staff  1124  5  7  2013 id_rsa.pub <----ファイル id_dsa.pub は userのみrw[600]
または
-rw-------  1 s14159876  staff  1264  5  7  2004 id_dsa <----ファイル id_dsa は userのみrw[600]
-rw-------  1 s14159876  staff  1124  5  7  2004 id_dsa.pub <----ファイル id_dsa.pub は userのみrw[600]

フォルダ .ssh を ssh としてコピーして自分(学外)のパソコンに

自分のパソコンにフォルダ .ssh ごと全部をコピーする必要があるのだが、このままでは不可視フォルダであるので見えなくて取り扱いにくい。 取り扱いやすいように、次のようにして .ssh を フォルダ丸ごと ssh という名前でコピーしておこう。 オプション -R(大文字)はMacOSではフォルダの中身もコピーする意である。

$ cp -r .ssh ssh

こうすれば、MacOsのファインダーからホーム内にフォルダ ssh があることを確認できるはずだ。

自分のパソコンがMacOSの場合には、ユーザホームにこのフォルダ ssh を配置して、フォルダの名称を変更して .ssh に戻しておく必要がある。

サーバ側に公開鍵を設置する

公開鍵とは、RSAでは id_rsa.pub、DSAでは id_dsa.pub の名前が付いたファイルである。 以下では、このRASまたはDSA方式で公開鍵と秘密鍵を生成したかを決して忘れないようにする(公開鍵の名前を authorized_keys2 に変更してしまうため、その公開鍵がRASまたはDSAのどちらの方式で生成したか分からなくなってしまうため)。

ここでは、サーバ側に公開鍵を転送する前に、公開鍵の名前変更を行ってから、その後にサーバ側にファイル転送する場合をしめした。しかし、サーバー側に id_dsa.pub または id_rsa.pub の公開鍵を転送してから、公開鍵の名前を authorized_keys2 に変更しても構わない←むしろ、この方が簡単かも (^^;

ファイルまたはフォルダの名前変更は、以下のようにコマンドで行わずに、FireFTPで行った方が簡単(選択して右クリック)。

RSAの公開鍵 id_rsa.pub をauthorized_keys2 に名称変更

以下の例では、RSAの公開鍵の名前変更をしめす。

公開鍵のファイル名 id_rsa.pub を次のようにして authorized_keys2 に変更しよう。 このファイル名「authorized_keys2」 の _ はアンダーバー (_) であり、ハイフン(マイナス)(- ) ではない。 また、keys2 のように (s) の後に (2) が付いていることにも注意する。 この authorized_keys2 が、大東ネットワーク内のWebサーバホストに公開鍵として(学内で)転送されるファイルである。

% cd
% cd .ssh <----フォルダ .ssh に移動
% ls <----フォルダ .ssh 内のファイルを確認
id_dsa        id_dsa.pub         id_rsa            id_rsa.pub
% mv id_rsa.pub authorized_keys2 <---- id_rsa.pub を authorized_keys2 にrename
% ls <----フォルダ .ssh 内のファイルを確認
id_dsa        id_dsa.pub         id_rsa       authorized_keys2

ちゃんと、authorized_keys2 に名前変更されていることを確認することは重要だ。 こうして得られた公開鍵 authorized_keys2 が、大東ネットワーク内にあるWebサーバホストに転送されるファイルとなる。

DSAの公開鍵 id_dsa.pub をauthorized_keys2 に名称変更

以下の例では、DSAの公開鍵の名前変更をしめす。

公開鍵のファイル名 id_dsa.pub を次のようにして authorized_keys2 に変更しよう。 このファイル名「authorized_keys2」 の _ はアンダーバー (_) であり、ハイフン(マイナス)(- ) ではない。 また、keys2 のように (s) の後に (2) が付いていることにも注意する。 この authorized_keys2 が、大東ネットワーク内のWebサーバホストに公開鍵として(学内で)転送されるファイルである。

% cd
% cd .ssh <----フォルダ .ssh に移動
% ls <----フォルダ .ssh 内のファイルを確認
id_dsa        id_dsa.pub         id_rsa            id_rsa.pub
% mv id_dsa.pub authorized_keys2 <---- id_rsa.pub を authorized_keys2 にrename
% ls <----フォルダ .ssh 内のファイルを確認
id_dsa        authorized_keys2          id_rsa       id_rsa.pub

ちゃんと、authorized_keys2 に名前変更されていることを確認することは重要だ。 こうして得られた公開鍵 authorized_keys2 が、大東ネットワーク内にあるWebサーバホストに転送されるファイルとなる。

公開鍵をWebサーバ www.st.daito.ac.jp 内にFTPする

上で作成したRSA方式またはDSA方式の公開鍵(authorized_keys2 と名前変更したものでも、生成したときのままの公開鍵 id_rsa.pub または id_dsa.pub)が格納されているフォルダごと、大東Webサーバに置く(Webサーバ側の フォルダ.ssh 内のid_rsa.pub または id_dsa.pub を authorized_keys2 にファイル名名変更する)。

大東ネットワーク内のローカルホスト(自分が使っているパソコン)には秘密鍵( id_rsa または id_dsa)が置かれており、この鍵ペアで認証を確認して、両者の間で安全なファイル転送を実現することができる。

  1. 大東ネットワークのWebサーバ名は www.st.daito.ac.jp である。
  2. Firefox を起動し、[ツール]/[アドオン]でFireFTPの設定で「隠しファイルを表示」にチェックを入れる。
  3. FireFTPで大東WebサーバにFTP接続する。
  4. リコーカルホスト内にフォルダ .ssh(先頭に「ドット」が付いていおり、sshは小文字)があることを確認。
  5. 接続先の大東Webサーバにはフォルダ public_html が表示されていることを確認する。
以上を確認した上で、以下のことを行う。
  1. ローカルホストにあるフォルダ .ssh をエタンで、大東Webサーバにアップロードする。
  2. 次のようになっていればOK。フォルダ.ssh はフォルダ public_html の外側に置かれていることに注意(もしそうでなければ、FireFTP内で.ssh フォルダをドラッグして、 public_html の外側に置く)。 st_ssh_folder
  3. 大東Webサーバ側にあるフォルダ .ssh 内の公開鍵 id_rsa.pub または id_dsa.pub を authorized_keys2 にファイル名名変更する。

SFTPモードの設定

fireftp_account_passphrase FireFTPのページの左上隅から既に作成している接続設定(アカウント)www.st.daito.ac.jp を選択するし、 右図([クリックで拡大])のように、「アカウントの管理」の[メイン]で「パスワード」には鍵ペア生成で入力した「パスフレーズ」を正しく入力する。 fireftp_account_sftp 次に右図([クリックで拡大])のように、「アカウントの管理」の[接続]で「セキュリティ」で[SFTP]を選択して、さらに秘密鍵では[参照]を押してローカルにあるフォルダ (MacOSの場合には.ssh )内の秘密鍵を選択して(図では id_dsa である)、[OK]を押す。

これで、学内のパソコンにおいて、Firefox + FireFTPを使って[接続]できればOKだ。 次は、自分のパソコン内に上でコピーしておいたフォルダ ssh を安全な場所に置いて、同様の手続きを行えば、学外からでも[接続]可能になる。

学外ホストに秘密鍵を安全に輸送する

ローカルホストに格納しておく秘密鍵 id_dsa および id_rsa (とサーバ側に置いた公開鍵)は決してなくしてもいけないし、信頼できるクラウドサービスを経由して、学外ホスト(自宅のパソコンなでに)にダウンロードして、絶対的に安全な場所に格納しておく。 秘密鍵や公開鍵を、メールに添付するようなことは絶対にしてはいけない。 USBメモリに入れて持ち運ぶようなことも推奨できない。