SSHの接続の基礎

2016.3.22 (火)

SSHとFTP

SSH接続はWEB製作なんかに携わっている人でも以外に知らないというか使ったことがないということがあって、一般的に広まってしまったのはFTP接続なのです。実際にシステム関連の仕事をやっているとFTPなんていう接続プロトコルは必要ないです。なくなってしまっても全然差し支えない。でもSSHがなくなってしまうとこれはもう世界のネットワークが死んでしまうという代物というのがSSH接続です。
SSHがFTPと何が違うのかというと、

  • 通信が暗号化される
  • 鍵認証でパスワード認証なんかよりも強力(すぎる)
  • ファイル転送は予備的な機能で、基本はコマンド送信のプロトコル

WinSCPなんかでファイルの転送をしている人も多いかと思いますが、あれは内部でSSH接続でSCPコマンドというコピーコマンドを使っているだけです。WinSCPもコマンドを送信できる機能があります。
またSSHがシステム屋さん専用の謎のプロトコルであるということから、ファイル転送においてはSFTPという名前になっていたります。(SSH)FTPの略なんでしょうか。SFTPはSSHをつかってファイルの転送をしています。
いずれにしろ、FTPはやめてSSHを使うことをおすすめします。

SSHのセキュリティー

システム的に真面目に考えないといけないという方は専門書で勉強するとして、あんまり興味ないけど知らなくてはならないという方は、何故にSSHが安全なのかということだけ覚えておくとよいかと思います。難しいところを全部端折っていってしまうと「合言葉が結構複雑」ということになります。例えば、むかしからある典型的な合言葉で「山・川」っていうのがあると思うのですが、これが本当に覚えきれないぐらい複雑です。

これが山です。(公開鍵)

ssh-rsa AAAAB3NzaC1yc2EAAAAB7wvai5DGiSuN//X+3FaMdALVHBXh7pCXems/5FyFCDvPsKcfORLLF8rOUMNRRscsS30NuLAAAQEAwQnHKxDCszf8k+xFVSzDY1LWNKKKVlRBdnV7oRc87yw1WbY5ZWsqWA/eXKcGFGOoLrYcWA5XbRQ+mjHDbTElorKC71smOOK7JtMh/xVUXeeL9ab8ujItb7vVWfOkUf5zZfZghcyIT4ivV+/FH+2Y0f+eCdvzFIC7t/3LvwsCTiBZMs964eNh6w5CtUp5ySgiZ03V758gMiAErF7aKWnbZEcQrhcDT6prGuOdXob7m/onEA1uLDvQKuBkwVJgdEITZgUGwo64LUKqY35+GQ== xxxxxxxxxxxxxxxx

これが川です。(秘密鍵)

-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: DES-EDE3-CBC,DF6064CCAAB86268
iMnGgwA3VcZtgIwIIK8R3TiRmPHKVQ3mrqepThDOYFcco5QnJvO3mkykrgdGmogm
4kaiAG5sJ2UXWn20c+g3CBDsZ4CdgRCXH/ALlHpGjeYS8KMbtYfXgt0y06aN+Pe1
yqOJmYCiceAdaUXBAzToztbvCWjtcwhhjtn&TY(rsxx6kb8TRQhwdpKAM3o5xEDP
Y0ICpvRZPKiABmm3df42O8SrTUiJyNlR2Pjz4briuzWEpOP4CKdbEGpshA86qu2u
j+HOdSAjQ7ltDqt6CfW1j5FaSbFQG+xWLdXEnNn+Wb0+9/NUi937oPsrYTsEuqC8
g1fQ15fz3C9a3Ww9S66RAus6RZQa9QML4AQhXbhRkhZUOWUmZge8QFUJyOrO0WuY
fJInQj5lKCEroe1qF2MUgunEEefw+yJJOIUY5XhFaGJ0ZTWfRDq5ZXpZxHGX+f/6
SIKHglRjBNUT58Z1pMGQCODkBzqdeLKjwAa+w1lxu1SaeYDGb2Mt82lM1aUIZ97h
077C/goDWtP/S6UQvMSQrhun58NjkNCZrG/c5dORpEC/1WBABgazyIiDZ0d2vpdO
Dta+iRq5rMNzFb5pU0OkTclui591kzOIPOIUhEff1W4pNbEiADkmc/3xtFOjh2ow
Rq9VXrF9swz6wAuZFcfTviWA2VKRU4wv1JsSBuJogUkat+8DBva1cTxA6NY6tXZb
MKzz3jaak18Sbp4qAZ/JVjEZNV1ozZgMwgJFE97X6SwvKLW+d5VZGZHzU5TNjS65
V9BQaSqbNKu+SVj7YT0pHYl1HoVdnpimDDDDfU5BP4+GJueOCOxjr0flv8JzMqEK
A356Jiuzqc1AB5eGjjkyyyRUE735m/DuIGkBk5rS2jgm6UOzQkYlT+AxeQAu08fp
WJ9HlmQXP2nQdUT1jbpYIFzqcxzn6ulhd2yEEb9NgBnLfjA6LY6FJgKabIqQGtp2
Lnb36h9kUZwoKXkLAkVRdhL6QRrYs2YvIXCbUjOUzHeUWeVmbZ0O1QvhRAxY9KDJ
f/b7xwfUoxP6BfBfi6Wa0sPy+W/tGAHQy6YetLfiY4fvPeP2IuPDljG9HcjN7y+F
64k7poPC2WXIWl0InCj4qM/+dvLvMmfoaRcCpkCHgBahRt3YabcTIhhnAr6TsHXY
K8/YejhYkMhHA6sLKUOT0iNOzAPxfaPTjPiB+49MPh6671etn1L/Dmd2+6uX0O9y
F6EHZ6EFueoGiL7J+FTIt0qZ23NPdKcGc3sCYrP0uA9sIzw0nSY/VIIQT/O2fFtm
Pa1fdqS8kvyydJXA127vNzEjkTpKXjZwFTlg8FTH4RVwNaPjXCY9ytJm8X2WQoA6
K/fPLrgskk9IACKVA6hCgzTVc2V+bRJwQIWrOz1KjABsaaSK5lxKmX3ThfwO2LZU
vKrVUiO+YN/wzeIltloJOJoRbXlHOU3Grhfn9BIn8y/SEB1kQ8qOvnkl44OTZnlR
xhj/WbfG2xQ2JVQB9fh3EraLLIadBA0LwXV3EcSWssg53IHtz0MtuS73m8zU5x2a
VbDoAQUXCXoXPLdqVAXp/dhYAbGjvpdX4xwx01NUqUJ7Jcc4loT5sA==
-----END RSA PRIVATE KEY-----

もうこの時点で安全といえば安全なのですが、しかしながらコピペができる世の中なのでこの山と川が流出してしまっては意味がありません。そのために上記の川に相当する部分は決して外部に露出させないというきまりになっています。これは、秘密鍵といわれるものですが、秘密鍵はメールで送ったりファイルを人に渡したりしてはいけません。これを守ることで安全が担保されます。
システムとしての安全はシステムとして担保されているのですが、だいたい人間のやることなのでミスります。とある阿呆がユーザー名とホスト名と上記の山・川に相当する公開鍵と秘密鍵を外部にまとめて公表してしまったら、誰でもログインできてしまいます。

  • 秘密鍵は外に出してはいけない。
  • ホスト情報やユーザー情報とともにこれらのファイルを同じフォルダーとかに置いちゃいけない。
  • 最終的にはログインできるIPアドレスの制限をきちんとしておく。

ということになります。仮にこれらの情報が外部に出ちゃったとしてもIPで制限かけておけばアクセスできるホストはほんの一部になるし、そういった場合は、公開鍵の登録ごと管理者が変更をかけて安全を担保します。

ちなみになのですが、FTPの場合の山と川を紹介します。まずFTPには山はありません。川しかないのです。で川は、

OJoRbXlHOU

せいぜいこんなものです。こんなセキュリティー全然安全ではありません。非常に危なっかしいです。