Transmitの鍵認証のSFTP接続で「ファイルは未サポートの形式です。」とエラーが出るときの対処

はじめに:CPIの場合

対象サーバーが「CPIレンタルサーバー ACE01」の場合は、この記事の方法では接続できません。2017年11月現在、SFTPの接続はパスワード方式のみとなっているためです。
「SSHでは接続できるのにSFTPでは接続できない」という状況になるのでかなりハマりました。

http://acesr.document.secure.ne.jp/ftp/sftp/

コントロールパネルからFTPアカウント(SFTPアカウントと共有です)を作成してください。


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

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

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

ef7bc580a9b4ffa990aaf4b9bbf6f257.jpg

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

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

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

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

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

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

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に登録してください。

ec445d3dbab8fb680159bb283743db77.jpg

補足

Filezillaを利用している場合

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

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