当サイトはVPSにdebian GNU Linuxをインストールし、Apache+MySQL環境でWordpressを使っています。GUI(X-Window)はインストールしておらず基本的にコマンドのみの操作環境です。
WindowsパソコンからPuTTY、WinSCPで接続してファイル転送等の操作はGUIで操作出来ています。PuTTYからは当然コマンド操作となりますが特に不自由はしていません。
しかしながら、ここへきてWindows10のサポート期限切れも近づいているので、Windows依存の状況を変えることにして、Linux Mint Debian Edition 6(LMDE6)をメイン環境にすべく環境を整備しています。LMDE6はとても良くできているので概ね良好です。
Linux版のWinSCPは無い(と思う)ので、ファイル転送にはFilezillaを使用することにしました。しかし、SSHの鍵認証が通らないのか、VPS側のファイヤウォールで拒否られているのか接続に失敗します。これは私のVPSには2つのセキュリティを施しているからで、SSH鍵認証の前に特定のIPv6アドレスしかSSH接続できない仕組みにしているからです。状況を確認して対処しなくてはなりません。
FilezillaでVPSに接続出来ないので原因調査
冷静に状況を確認するとFilezillaに公開鍵を登録して接続を試みるとすぐに切断されてしまいます。どうやらIPv6アドレスが拒否られている様です。さくらVPSのコンソールで確認したところ、LMDE6のIPv6アドレスは正しくallowに追加されているので接続はできるハズなのですが・・
そこでIPv6で通信してないのでは無いかと疑いました。ifconfigで確認したIPv6アドレスは一致しているものの、実際の通信はIPv4で行われていてVPS側で接続が拒否されている状況を確認しました。WinSCPではIPv6で接続してくれるので??という感覚だったのですが、FilezillaがIPv4を優先していても不思議ではありません。
Filezillaで接続先のIPv6アドレスを明示的に指定する
調べればすぐに答えは出てきました。どうやらFilezillaでは接続先のサーバー名を指定する際に、FQDNで指定しているとIPv4を優先して正引きする様です。さくらVPSは固定でIPv4/IPv6アドレスを貰えるので、FilezillaにIPv6の固定アドレスを[]で囲って指定することにしました。

要点としては、下記2点でした。
- 接続先ホストにIPV6アドレスを[]で囲って指定する必要があった。
- 鍵ファイルはWindows環境でも使用していたppkファイルが使用できた。
これでさくらVPSで稼働しているdebianにSSHで接続してリモート操作が可能になりました。
備忘録:Linuxで秘密鍵からppkファイルを生成する方法
今回、Windows環境で使っているppkファイル(PuTTYで作成した)をコピーしてそのまま流用できたのでppkファイルを生成する手間は省けましたが、将来的に念の為Linux MintにインストールしたPuTTYで秘密鍵からppkファイルを生成して正常性を確認した手順を備忘録しておきます。
検索してみたのですが、秘密鍵からppkファイルを生成する方法は、Windows版PuTTYを使う情報ばかりでLinux環境だけで生成する方法の情報は少ないです。
Linux Mintの場合はパッケージリポジトリからPuttyがインストールできるので、PuttyとPutty-toolsをインストールしておきます。これで準備はOKです。

ppkの生成(変換)には、puttygenというコマンドを使用します。GUI環境が良く仕上がっているLinux Mintだとしても、コマンドレスとは行かなくなって来ました。
-O(ハイフンオー)と-o(ハイフンオー)が混在しているのが紛らわしいですが、いずれもアルファベットのオー(大文字と小文字の違い)です。パスフレーズは当然秘密鍵を作った時のものを入力する必要があります。
aoipuchu@letsnote-lmde:~$ puttygen id_rsa -O private -o id_rsa-putty.ppk
Enter passphrase to load key:
aoipuchu@letsnote-lmde:~$
Code language: PHP (php)
注意点としては、秘密鍵(id_rsa)を取り扱う際はパーミッションに厳格になっているので、所有者以外のアクセス権限を無効にしておく必要があります。必然的に所有者も「読み取り専用」にしておくことになるでしょう。パーミッションの警告が表示されたらアクセス権を確認する必要があります。
これをFilezillaに鍵認証として登録しておけば、接続の度にパスフレーズを確認して来るので入力するだけでVPSと接続出来ます。UIのデザインは違いますがWinSCPと同様のことができるので問題ありません。着実に脱Windowsが進みます。
唯一、Windows環境(WinSCP+PuTTY)から使い勝手が下がるのは、WinSCPでVPSに接続した状態からそのままSSHセッションを流用してPuTTYを起動することが出来たのが、FilezillaからPuTTYを起動することが出来無さそうな点です。いちいちPuTTYを起動してログインプロセスを踏む必要があるのはやや手間です。
Linux MintにFilezillaを設定して手軽になった
今まで、自室のデスクトップPC(Windows10)にインストールしてある、WinSCP、PuttyでさくらVPSのdebianをSSHで操作していましたが、いちいち自室(2階)に上がる手間がなくなり便利になりました。さっとLet’s noteを取り出して起動すればLMDE6で居間にいながら作業できます。
今のところ自宅外からVPSにアクセスすることは想定していない(必要性が無い)ので、接続回線がIPv6であることを必須条件としてセキュリティ的に利用しています。今後Let’s noteを持ち出して、外出先から接続しようとしてもそれは制限となります。(さくらVPSのコンパネからコンソールを起動して設定をゆるくすれば可能ですが。)状況次第では工夫しなくてはならないかも知れません。
参考:IPv6回線からの接続に制限している理由
IPv6回線も普及して来たのでこのセキュリティも徐々に効果が薄くなって来つつありますが、VPSに設定を施した当時はIPv6の普及がまだ進んでいなかった&知識を身につけている人が少なかったという背景があります。
一般家庭にIPv6環境が浸透してきている現状、決定的に有効とは言えませんが、それでもVPSにSSH接続できるIPv6アドレスを1つに制限する仕組みを採用しているので、ある程度のセキュリティは確保出来ているかなと思っています。
こういうモノ(工夫)は色々と考えられるので、方法の一つとして参考にして貰っても良いかなと思います。
コメント