2016-01-22追記:
ご指摘をいただき、用語・パーミッションの変更など、一部加筆修正しました。

MacOS用のFTPクライアント「Transmit」は転送が早く、大量ファイルの管理がしやすいので重宝しています。

パニック - Transmit - Mac OS X FTP + SFTP + S3 アプリケーションの完成形

「Transmit」はセキュリティ上強く推薦されている、鍵認証方式のSFTP接続にも対応していますが、いざ秘密鍵を登録しようとすると「ファイルは未サポートの形式です。」というエラーが出てしまい登録できません。



これは、Transmitが秘密鍵ファイル(ここではRSA)をそのまま扱うことができないためです。一般的なOpenSSL証明書の形式である「PEM形式」に変換すると登録できるようになります。

注意点

ドットではじまる非公開ファイルが、Finderで見えるよう設定している前提で解説しています。

対象サーバーが「CPIレンタルサーバー ACE01」の場合は、たとえPEM形式に変換しても接続できません。CPIでは2016年1月現在、SFTPの接続はパスワード方式のみとなっているためです。

SSHでは接続できるのにSFTPでは接続できない、という場合はこのケースと考えた方がよいでしょう。サーバー管理者に連絡して、FTPアカウントを作成してもらってください。

PEM形式のファイルを作成する

まず、受け取った秘密鍵ファイルを以下の場所へ移動してください。

/Users/(MacOSのユーザー名)/.ssh/

「ターミナル(いわゆる、黒い画面)」を起動し、以下のコマンドを入力して、秘密鍵を置いたディレクトリへ移動してください。

cd /Users/(MacOSのユーザー名)/.ssh/

続いて、以下のコマンドを入力してください。

openssl rsa -in (秘密鍵のファイル名) -outform pem >(秘密鍵のファイル名).pem

RSA形式ファイルをもとに、「秘密鍵のファイル名+.pem」というPEM形式のファイルを作成します。元の鍵はなくならないので安心してください。

もし、預かった秘密鍵のファイル名が「id_rsa」なら、コマンドは以下の通りとなります。

openssl rsa -in id_rsa -outform pem >id_rsa.pem

「秘密鍵のパスフレーズ」を聞かれるので入力してください。パスフレーズなしなら、何も入力せずエンターキーを押せばよいです。

生成されたPEM形式のファイルは、パーミッションが「644」となっています。オーナー以外が扱えないよう、以下のコマンドで「600」に変更しておきましょう。

chmod 600 id_rsa.pem

Finderでディレクトリを確認すると、PEM形式のファイルが増えているはずです。このファイルを、Transmitに登録してください。



補足

Filezillaの場合

いっぽう、同様に著名なFTPクライアントである「Filezilla」は、秘密鍵を「PPK形式」に変換する必要があります。こちらはコマンドは必要なく、「設定」メニューで秘密鍵を登録際に、アプリケーション側で変換を行ってくれます。

ただし、Filezillaは非公開ディレクトリをブラウズできないので「.ssh」ディレクトリに秘密鍵を入れていると登録できません。安全性は落ちますが、この場合は「書類」内にディレクトリを作っても問題はありません。

CMSでFTPを利用することの危険性

CMSのコアファイルには、「データベースのパスワード」など、重要な情報が多数含まれています。暗号化されていない旧来のFTP方式で、これらを取り扱うのは、とても危険なことです。

最近は安価なサーバーでもSFTPを利用できるようになり、鍵ファイルの作成もコントロールパネルでできるようになりました。慣れるまでが面倒ですが、可能な限り暗号化された転送方式に切り替えることをおすすめします。