POEM株式会社 市民電子情報網 ▲戻る

ホスティングパックでの SFTP の利用について

概要

ホスティングパックでは Web コンテンツの更新のために、 FTP でのアップロード/ダウンロードに加えて SFTP でのアップロード/ダウンロードにも対応しております。


SFTP は ssh プロトコルの上を用いたファイル転送方法で、 認証やファイル転送におけるやりとりはすべて暗号化された通信路の上で 行われます。 これに対し、 FTP では FTPS (FTP over SSL/TLS) を用いない場合には 利用者認証もファイル転送も平文で通信が行われますため、 ネットワーク上での盗聴に対しては脆弱です。 このため、FTP に替えて FTPS または SFTP でのコンテンツ更新をお勧めいたします。


SFTP は 一般的には ssh 接続用ポート(TCP 22番ポート)を ssh/slogin の shell 接続、 scp によるファイルコピー等共用します。 しかしながら、ホスティングパックでのサービスでは SFTP のみを提供しており、 ssh/slogin によるシェル利用や scp によるファイルコピーには対応しておりません。


SFTP の認証には、サイト管理者が発行した FTP 利用可能なユーザー ID を用います。 サイト管理者の発行した「FTP」が利用可能な利用者 ID がそのまま SFTP での利用者 ID になります。


SFTP で利用できる認証方式はパスワード認証および公開鍵認証です。 パスワード認証には FTP で利用するのと同じパスワードを使用して下さい。 公開鍵認証での利用方法は後述いたします。

設定情報

サーバホスト名: サイトのドメイン名またはhp.poem.jp
通信ポート: 22(標準のポートであるため、ほとんどのクライアントでは指定しなくて良い)
ユーザ名: 利用者ID(註1)
パスワード: 利用者パスワード
認証方式: パスワード認証または公開鍵認証(RSA鍵またはecdsa鍵;利用方法は後述)
ホームディレクトリ: / (Web コンテンツのドキュメントルートディレクトリ)
サーバのフィンガープリント(註2): 2048 SHA256:n7jAeDTKSxySCOxDKcchZSUu+EgasHsXXML90ey4lk4 no comment (RSA)
256 SHA256:EIFlBEC3mfS2FSs/k6x0scKRED9BTPvPmSOcs/qK9Xk no comment (ECDSA)

(註1)利用者ID
サイト管理者から発行された利用者IDです。 IDは「@」を含んだE-Mailアドレス形式のものもあります。 OpenSSH付属のコマンドラインクライアントである sftp コマンドでは
sftp <ユーザー名>@<ホスト名>
のように接続するホスト名の前に「@」で区切って ユーザー名を指定する必要があることから、 「@」を含むユーザーIDの場合混乱しやすいですが、 たとえばユーザーIDが nonexist@no-debris.org である場合には
sftp nonexist@no-debris.org@hp.poem.jp
sftp nonexist@no-debris.org@no-debris.org
のように最後の「@」の前までがユーザーIDと見なされるため、 このように指定が可能です。
(註2)サーバーのフィンガープリント
SSHやSFTPでは正しいサーバーに接続したかどうかを確認(認証)するためにも 公開鍵暗号を使用しています。 SSHやSFTPクライアントは「知っている」サーバーについてはその公開鍵を 将来の接続したときの確認のために(known_hostsファイル等に)保存しています。 しかしながら、初めて接続する場合など接続先サーバーの情報がない場合には サーバーが示して来たサーバーの公開鍵の受け入れを行うかどうかの確認のため、 SSH/SFTPクライアントは利用者に公開鍵のフィンガープリントという情報を 示して正しいサーバーであるかの確認を求めます。
ですので、始めてHosting PackへとSFTPクライアントに接続したとき、 ここに示されたフィンガープリント(のどちらか)が示された場合には正しく Hosting Packのサーバーに接続できたことになります。 逆に、ここに示された以外のフィンガープリントが示された場合には フィンガープリントに用いる形式が異なるか、 あるいはなんらかの理由で別のサーバーに接続したか、 ここに書かれた掲示内容に誤りがあるかのいずれかです。
もし、正しくサーバーを指定したにも関わらず、 ここに示された以外のフィンガープリントが表示されました場合には、 恐れ入りますが、そのスクリーンショットまたは文字列のコピーを添えてメールで support@poem.co.jp まで御連絡下さい。
なお、一度接続済みでサーバーの公開鍵が保存されている場合で、 正しいサーバーに接続した場合にはこのフィンガープリントに関する情報は 利用者には提示されません。
ただし、サーバーの公開鍵が保存されているにもかかわらず、 接続したサーバーが示した公開鍵が異なる場合には、同様にクライアントは利用者に そのフィンガープリントを示した上で接続を拒否、 あるいは利用者に危険性を提示した上で接続をするかどうかを尋ねてきます。

公開鍵認証の利用

公開鍵認証では利用者が公開鍵暗号用鍵ペアを作成し、 鍵ペアのうち公開鍵をサーバーに認証用の鍵として登録することにより、 公開鍵によって暗号化された暗号文を利用者クライアントが秘密鍵を用いて 復号できることをもってして正当な利用者であることを証明する認証方式です。


ここではホスティングパックのSFTPサービスで公開鍵認証を用いるために、 公開鍵を登録する方法を説明いたします。 なお、ここで説明する登録方法はホスティングパックに固有のものであり、 他社のサービスやPOEMの提供する他のサービスでは異なる方法での登録が 必要になることでしょう。


ホスティングパックのSFTPサービスではサイトの path、 /.sftp/<利用者ID>/authorized_keys ファイルに公開鍵を RFC4716 形式で登録することで公開鍵認証による接続が 可能になります。以下、順を追って説明いたします

鍵ペアの作成

SFTPクライアントあるいはSSHクライアントソフトウェアの機能を用いて 認証に用いる鍵ペアを作成します。 ホスティングパックのSFTPで利用できる鍵の形式は DSA,RSAおよびECDSAです。 ED25519形式は未対応です。 またDSA形式は受け付けますが暗号強度に問題があるためお勧めしません。


なお、後でまた説明しますが、 公開鍵はRFC4716形式で登録する必要があります。

公開鍵登録用ディレクトリの作成(サーバー側)

ホスティングパックサーバーにSFTP, FTPS, あるいは FTP で接続し、 接続した / ディレクトリのすぐ下に .sftp というディレクトリ(フォルダ)を作成します。 このディレクトリは Web サーバーからは直接アクセスできないように 保護されています (ただし、CGIやサーバーサイドスクリプトからのアクセスは可能です)。 このディレクトリのパーミッションは 0750 (ユーザー自身はフルアクセス可能、グループユーザーはディレクトリに 移動とファイル名の読み取りが可能、その他のユーザーはアクセス拒否)として 他のユーザーからアクセスされないようにします。


次に作成した /.sftp ディレクトリの下に、 公開鍵認証を行う利用者のユーザーIDと同じ名前のフォルダを作成します。 例えば利用者IDが nonexist@no-debris.org ならば、 /.sftp/nonexist@no-debris.org というディレクトリを作ります。 ホスティングパックの SFTP および FTP サービスでは サイトの共同作業用の利用者IDを用いて 同じサイトの / ディレクトリに接続しますので、 /.sftp/ の下には公開鍵認証を行う利用者の分だけディレクトリが 並ぶことになります。

利用者別公開鍵登録ファイルの設置

SFTPで用いる公開鍵を RFC4716 形式で authorized_keys というファイル名のファイルに保存します。 特に OpenSSH 付属の SSH 用鍵作成用コマンドラインツールである ssh-keygen (Windows 環境では ssh-keygen.exe) で作成される鍵ペアの公開鍵ファイルはOpenSSHの独自形式ですので注意が必要です。 ssh-keygen を使用して鍵ペアを作成した場合には、 同コマンドのエクスポート機能を利用して RFC4716 形式に変換する必要があります。


authorized_keys ファイルには複数の公開鍵を登録することもできます。 複数の公開鍵を登録する場合には、単純にファイル内に続けてキーを記述します。
以下は二つのキーを記述した例です。

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "256-bit ECDSA, converted by          nonexist@no-debris.org"
AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBCy/MWPjtQLRv5u79d
teh5kn2UxcLH19Mo5rDqt0q8Rt8zs09ZrwckZY9woDGijuwjZG5ityaKKMXDkkNWPb6k8=

---- END SSH2 PUBLIC KEY ----
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "256-bit ECDSA, converted by          nonexist@no-debris.org"
AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBNalNdTSZqfSCfrz8O
idi42GuABLtKdZu5PEX1ffbdlrl0z2f6jMPZc0DQYVZa4zmIHzgKLhXrwXN+7qnbVW4V8=

---- END SSH2 PUBLIC KEY ----

このように作成した authorized_keys ファイルを ホスティングパックサーバーの公開鍵登録用ディレクトリの中の、 さらに認証を行う利用者の名前のディレクトリの中に authorized_keys の名前のまま設置します。 先の利用者IDが nonexist@no-debris.org の例でいえば、 /.sftp/nonexist@no-debris.org/authorized_keys として設置することになります。


以上のサーバー側の準備により、 当該利用者の公開鍵にて認証が可能になります。

管理者の方むけ

管理者パスワードの変更

こちら から行なえます。

サイト管理者メニュー

サイト管理作業 (新しい利用者ID や電子メールアドレスの発行など) や サイトの設定変更は、サイト管理者メニュー から行なえます。