Windows から SSH ログインしよう
ターミナルソフトで簡単安全に RSA ログイン

SSH Terminal software on Windows, easy and safty login, by SHIBATA Akira
作成 2005/11/29

はじめに

筆者は普段は Windows のパソコンを使っている。しかし Linux や BSD 系の UNIX 風味のサーバも使っているワケで、いわゆるコンソール(本体につながった画面やキーボード)をさわることはほとんどない。 UNIX 風味な OS はマルチユーザマルチタスクなのでネットワークから複数人が同時に使うことが可能なのだ。そのときに画面は文字ばかりの CUI なわけだが、これがどうして非常に便利だったりするのだ。 GUI なのは Windows が筆者の手になじんでいる。サーバの設定をするには CUI なターミナル画面を使って設定し、出てきたエラーやメッセージをコピーしてメイルに貼り付けて、メイリングリストに質問したりするのもターミナル画面を使っているので非常に便利だ。つまり、 Windows のメイルソフトやブラウザを使いながら、サーバの設定をあれやこれやとできるわけだ。あるいは、ネットワークが生きている限り、リモートから再起動もできる(起動途中で刺さらなければだが、:-)し、いろいろ使い倒せるのだ。

ターミナルソフトでログインしてサーバを使うには、代表的な方法として telnet と ssh による方法が挙げられよう。 今回は Windows 版の SSH を使えるターミナルソフトを使えるようにする。

なぜ ssh なのか?

「なぜ ssh なのか?」疑問に思う方もあろう。 理由は簡単だ。 telnet を使うのは危険だからだ。 telnet は古きよき時代に作られた通信の方法で、利用者が打ったキーをそのままネットワークに流すのだ。 素直といえば素直だが、パスワードもそのままネットワークに流れるわけで、この文書をお読みのあなた!が「銀行に行ってキャッシュカードの暗証番号を機械に向かって 3278 と声にだす状況」を考えてみてほしい。 その今言った暗証番号を誰かが聞いていると思うだろう。 まだ、銀行に行ってなら、回りに人がいたらわかるものだが、人がいなくても盗聴器があったら? それどころか銀行の機械のボタンを直接操作するから安心だとも言っていられない。 銀行内の現金引き出し機に盗撮カメラが堂々とつけられて暗証番号を盗み撮った例もある。 telnet はまさにそういう状態なのだ。 インターネットの線は誰が途中をのぞいているかわからないので、もっと困りものだ。

そこで ssh の登場だ。 簡単に書けば、通信の内容を暗号化してナニが通っているかわからないようにするのだ。 だから、パスワードだろうが、ヒミツの電子メイルを流そうが、通信経路ではバレないという利点がある。 ただ〜し、通信経路が安全になったからといって、完璧ではないことを忘れてはならない。 いくつか例を挙げるので大丈夫そうか考えてみよう。

  1. 自分が他人にパスワードや認証情報を教えていないか
  2. 自分が操作する端末は信用できるか
  3. これから使おうとするサーバは本物なのか

一番後ろに挙げた「サーバが本物か」どうかについては「 Windows 版 SSH ターミナルソフトインストールからログインまで」の中のサーバの公開鍵の確認についてにもう少し詳しく述べるが、そもそも使おうとするサーバが「自称本物」であって、オレオレ詐欺(振り込み詐欺)のようにニセモノが本物であると主張している場合があるので気をつけよう。 では、上の箇条書きの最初の「自分が他人にパスワードや認証情報を教えていないか」という問題だが、論外と言ってもいいかもしれないが、筆者の周りでもパソコンのパスワードを平気で教える人がいたので注意したことがあった。 キャッシュカードの暗証番号はパスワードなのだ、それと同じと考えればいわずもがななので筆者はこれ以上解説しない(笑)

さて、最後に「自分が操作する端末は信用できるか」ということだが、イヤな時代になったもので、パソコンのキーボードを叩いた情報をすべて流してしまうソフトが仕込まれていたりすることがあるので、気をつけろということなのだ。 実際にはソフトだけでなく、装置であることもあるのだが、要はヒミツにしているはずのものが別ルートへ生のまま流れているようなことになっていないかということなので、下にいくつか現実にあった事例を挙げるので考えてほしい。

「なぜ rsa 認証でログイン」なのか?

Windows 版 SSH クライアントを使って SSH を受け付けるサーバに SSH のパスワード認証でログインするには「 Windows 版 SSH ターミナルソフトインストールからログインまで」で解説するが、SSH パスワード認証はユーザ名とパスワードだけの組み合わせだから本質的に力づくの攻撃(ブルートフォースアタック)に弱い。 SSH でパスワード認証を使っているからといってクラックされたとかそういう話は聞いたことがないし、筆者がコッソリ師匠と仰いでいる人もそう述べているが、下に解説するパスワードアタックの実際にあった痕跡の統計を見てもまだパスワード認証だけでいたいか考えよう。 以下の手順を実行することで安全で、場合によってはパスワードナシなどの簡単なログイン方法が使えるようになる。 無論パスワードを入れないで済むということは端末(あなたのパソコン)を盗まれたら他人にいきなりあなたのサーバ上の情報やサーバを経由する情報をすべて見られてしまったり、そもそもの設定まで変えられてしまう恐れ(電子メールを横取り、覗き見などもできる)もあるので、その辺を良く考えよう。

rsa 認証はパスワードだけでなく、事前にサーバと自分のコンピュータとの間で鍵(コンピュータ同士の暗号用合言葉で、人間にはとてもマネできないようなの)を作っておいて、それをサーバと自分のコンピュータで取っておいてログインのときにそれをも使って本物か確認するのだ。 だから、その鍵が合致しなければ、他人が仮にパスワードを盗んだとしてソレを入力してもログインできないので安全なのだ。

ということで、 Windows のターミナルソフトで公開鍵暗号の RSA 認証方式でログインできるよう手順を示す。他にも DSA などもあるが、とりあえず RSA 認証方式のみとする。

そうは言っても、下の手順はログインできることが前提なので「 Windows 版 SSH ターミナルソフトインストールからログインまで」をみてパスワード認証でログインして作業をしよう。 この作業はパスワードアタックの痕跡を見てもわかるように危険なのでできるだけ安全な状態で、できることならインターネットから隔離した状態で、作業しよう。

パスワードアタックの痕跡

マズは下の図(クリックすると別ウィンドウで開く)を見てもらおう。 これは現在運用中のサーバで実際に残っている「パスワードログインにチャレンジして失敗した実績」だ。このサーバでは 152 週間前から統計を取り始めた。 だんだん、アタックされる回数が増えている、順調に人気が出てきているようだ(笑) 中には数回あるいは数十回のレベルで筆者がパスワードログインして失敗したものがあるかもしれない(笑)が、実に失敗総数は 106,886 回である。 これは単純計算で毎日 100 回くらいだ。 ヒマなヤツがいるなぁと思った人は良く考えよう。 こんなこと人手でやるヤツはいない。 プログラムで自動的にいろいろなサーバを探してチャレンジしているのだ。 チャレンジに成功したものはきっと自動的にご主人様へ報告するのだ。 今のところこのサーバでは「ヤられちゃった痕跡」はないが今後もヤれないとはいえない。 どんどんチャレンジは増え続けている。 これは防衛あるのみである。

パスワードログイン失敗総数の推移

では、いったいどんなユーザに対してアタックしているのだろう?それを分けてみたのが下の図だ。…それはダントツで root に対して、そして少し離されて admin である。 そう、今 root でリモートからパスワードログインしている人は今すぐ「その方法」をやめろ!事情があるなら守りをもっと固めてからにしよう。

パスワードログイン失敗上位から

root や admin 以外も結構多いぞ!下の図は 3 位以下の失敗ユーザ名のグラフだ。 使わないアカウントは抹消し、サーバソフトは止めておこう。

パスワードログイン失敗三位以下

なーんだ、「オレは日本人風アカウントだから安心」と思う人は下をみよう。 アタックする奴らもバカじゃない。 だんだん、日本人の名前もチャレンジしつつあるし、最近急にどんどん増えている。 ということで、どんなアカウントであってもパスワード認証を使っている限りは安全度が低いのだ。 だから rsa 認証を使おうというわけだ。

パスワードログイン失敗日本人ユーザ名

参考に、パスワードログイン失敗したものから日本人だと思われるアカウントを抜書きしてみると下のような感じだ。 と思ったが全部で 300 くらいあって大変なので上位 100 分だけとしておく。 saito , takahashi , kimura , hamada , arai , abe , nishi , hiroshi , sakai , fujii , shimada , harada , kitamura , aoki , suzuki , naoki , kawano , sasaki , yoshi , amano , tanaka , haru , ikeda , chiko , ishikawa , hori , hasegawa , ishii , shimizu , nakayama , yoshiko , yamamoto , koba , fujita , fujimi , sakura , mayumi , fukuda , shibata , kenichi , iizuka , baba , aoyagi , akimoto , rie , higuchi , yama , ogawa , nishino , masuda , hayasaka , matsu , nori , kato , yamazaki , sugawara , ogura , noguchi , nakano , nakagawa , makino , kojima , kiyoko , katsuo , noriko , nakamoto , kitano , kataoka , asakura , watanabe , morita , mori , mikami , makoto , toshi , sakamoto , nozomi , miura , iwabuchi , imai , atsushi , saitou , takizawa , shouhei , miyajima , yoneda , onodera , masami , kondo , jin , fukui , araki , yoshioka , takahasi , saeki , onishi , nakazato , majordom , kadota , azuma

参考情報

注意

当文書は日本国内での各ソフトウェアの使用を前提としている。もし、この文書をお読みのあなたがフランス国内にいるか、あるいは通信がフランス国内を経由する場合には、暗号化通信は「暗号化には首相の認可が必要」であるので、下に解説する各種ソフトのフランス国内経由通信でのご使用はご遠慮願いたい。

他の地域にお住まいの方も、かかる関連通信やソフトの使用が合法であるかを確認のうえ、自身の責任において使ってほしい。。

なお当マニュアルは正確を期し、また有用であることを期待するが、必ずしもその結果を保証するものではない。 私が便利だと感じたように、この文書を読むあなたもこの便利さを享受してほしい。


解説するソフト

まずはチャレンジするモノをひとつ選べ!

RSA 認証のためのキー作成とサーバへのキー登録をして、 RSA 認証でのログインまでを解説する。ログアウトするときは exit または logout と打って [Enter] キーをたたこう。 なお、パスワードを入力しないでも済むようにできるが、セキュリティの観点からすすめられないのでやり方はあえて記述しない。

前提条件

一旦はパスワード認証でログインできる必要がある。できなかったら /etc/ssh/sshd_config の PasswordAuthentication が no になっているだろう。 yes にしておこう。また RSA 認証をするので RSAAuthentication も yes にしておこう。 /etc/ssh/sshd_config を書き換えたら sshd を再起動しておこう。

公開鍵認証でログインできるようになったら /etc/ssh/sshd_config 中の PasswordAuthentication を no にしておけば、ユーザ名とパスワードをめったやら組み合わせてログインチャレンジする力づくの攻撃にはびくともしなくなるハズだ。しつこいようだが、 /etc/ssh/sshd_config を書き換えたら sshd を再起動しておこう。参考に筆者のところのサーバの /etc/ssh/sshd_config は下のようにしている。

Port 22
Protocol 2
HostKey /etc/ssh/ssh_host_key
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_dsa_key
UsePrivilegeSeparation yes
KeyRegenerationInterval 3600
ServerKeyBits 768
SyslogFacility AUTH
LogLevel INFO
LoginGraceTime 600
PermitRootLogin no
StrictModes yes
RSAAuthentication yes
PubkeyAuthentication yes
IgnoreRhosts yes
RhostsRSAAuthentication no
HostbasedAuthentication no
PermitEmptyPasswords no
PasswordAuthentication no
X11Forwarding no
X11DisplayOffset 10
PrintMotd no
PrintLastLog yes
KeepAlive yes
Subsystem       sftp    /usr/lib/sftp-server
UsePAM yes

プラン

RSA 公開鍵暗号認証までには、どのターミナルソフトでもだいたい同じ手順でできるようにした。
  1. まずはパスワードログイン
  2. 鍵の作成
  3. 鍵の保存(公開鍵・秘密鍵)
  4. サーバへ公開鍵を登録( Windows のメモ帳で開いて、サーバの登録ファイルに直接記述)
  5. RSA 認証でログイン→成功

本当は、サーバ( UNIX 系 OS )で ssh-keygen して秘密鍵をクライアントの Windows のターミナルソフトに持ってくるとか、あるいは Windows マシンで鍵を作って、サーバへ公開鍵を転送し cat して ~/.ssh/authorized_keys に追加してやるなどの方法がメジャーだ。しかし、ファイルを転送するソフトが必要だし、 Poderosa のようにサーバで作った秘密鍵が Windows のターミナルソフトに持ってくると使えなかったりということで、なかなか難しい。そこで今回は鍵の種類を RSA 1024bit と決めうちし、公開鍵をエディタで作ってしまおうと考えたわけだ。 PuTTYgen で作成した公開鍵には改行コードが入っていたりするが取り除いて適切に書き直してやれば問題ないことがわかったし、 Poderosa で作った公開鍵をサーバに登録してしまえば、これも問題ない。ということで、筆者が一般的に見るやり方とは違うが注意深くやればきっとできるはずだ。

健闘を祈る。 Good Luck!


UTF-8 TeraTerm Pro with TTSSH2 の場合

最初に TeraTerm を起動してパスワード認証でログイン(プラン手順【1】)しよう。(TeraTerm のインストールからログインまではこちら
解説画面の様子
プラン手順【2】
メニューバーの設定→SSH キー作成。
メニュールート図
プラン手順【2】
キーの種類を選ぶ。今回は RSA を選んで生成ボタンをクリック。
キーの種類選択
プラン手順【2】
キーのパスフレーズを入力して(従来のパスワードと違うもので可)、もう一度生成ボタンをクリック。
パスフレーズ入力
プラン手順【3】
上の手順後公開鍵を保存しよう。ここでは id_rsa.pub としよう。
公開鍵保存
プラン手順【3】
次に秘密鍵を保存しよう。ここでは id_rsa としよう。
秘密鍵保存
プラン手順【4】
公開鍵ファイルをメモ帳で開く。
公開鍵ファイル
プラン手順【4】メモ帳
もし、右図のように折り返し表示の設定なら、折り返しをナシにしよう。
右端で折り返し表示状態の図
プラン手順【4】メモ帳
折り返し表示でなくなったら次に進もう。
折り返し表示ナシの表示状態の図
プラン手順【4】メモ帳
一行全部を選択してコピーし、
メモ帳でコピー
プラン手順【4】
端末でのホームディレクトリで vi ./ssh/authorized_keys と打ってエディタを開こう。
$ vi .ssh/authorized_keys
プラン手順【4】
インサートモード( [Esc] i )になって、端末で貼り付けて保存終了。( [Esc] :qw [Enter] )
貼り付け
プラン手順【4】
公開鍵のパーミッションを変更し、
$ chmod 600 .ssh/authorized_keys
プラン手順【5】
ファイルのパーミッションが変わったか確認。
$ ls -l .ssh/authorized_keys
-rw------- 1 admin admin 229 2005-11-28 22:14 .ssh/authorized_keys
$ cat .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAA …略
プラン手順【5】
新しく端末を起動して、ホストを選択して
  • ユーザを記述
  • 手順2で作成したパスフレーズを入力
  • RSA/DSA鍵を使うを選び
  • 秘密鍵のファイル名を入れる
貼り付け
プラン手順【5】
手順2で作成したファイルを選ぶ
秘密鍵選択画面
プラン手順【5】
ログイン成功したら成功!おめでとう。


終了するには exit か logout と打って [Enter] をたたこう
$ logout

PuTTY: A Free Telnet/SSH Client の場合

PuTTY の場合は PuTTYgen というアプリケーションでキーを作成する。 最新版は本家を利用されることをオススメする。 本家が調子悪いときにはローカルコピーをご利用可能。

PuTTY を起動してパスワード認証でログイン(プラン手順【1】)しよう。(PuTTY のインストールからログインまではこちら

解説画面の様子
プラン手順【2】
PuTTYgen を起動しよう。
puttygen アイコン図
プラン手順【2】PuTTYgen
今回は SSH2-RSA 1024bit なので、そのまま Generate ボタンをクリックしよう。
キー作成開始
プラン手順【2】PuTTYgen
乱数を作るためにマウスをグリグリ動かすべし。
マウスをグリグリする画面
プラン手順【3】PuTTYgen
パスフレーズを入れて公開鍵と秘密鍵を保存しよう。
パスフレーズ入力画面
プラン手順【3】
公開鍵を保存する。今回は id_rsa.pub とする。
公開鍵保存画面
プラン手順【3】
秘密鍵を保存する。今回は id_rsa とする。自動的に拡張子 ppk がつくことを後で確認できる。
秘密鍵保存画面
プラン手順【4】メモ帳
PuTTYgenで作成される公開鍵はサーバで使われる標準形式とは少し違うので、手作業で直すことにする。鍵の開始部分「 AAAAB3…」の前を ssh-rsa に書き換え鍵の中に 64 文字毎に右図で「↑」に見える記号(3個アリ)を抜こう。最後の「---- END SSH2 PUBLIC KEY ----」を削れば完成だ。
公開鍵改変画面
プラン手順【4】メモ帳
---- BEGIN SSH2 PUBLIC KEY ----↑Comment: "rsa-key-20051128"↑AAAAB3NzaC1yc2 省略 AO↑w/myp7s=↑---- END SSH2 PUBLIC KEY ----
↓↓↓↓
↓改変↓
↓↓↓↓
ssh-rsa AAAAB3NzaC1yc2 省略 AOw/myp7s=
改変後
プラン手順【4】メモ帳
改変した公開鍵をコピーして、
メモ帳でコピー画面
プラン手順【4】
端末でのホームディレクトリで vi ./ssh/authorized_keys と打ってエディタを開こう。
$ vi .ssh/authorized_keys
プラン手順【4】
インサートモード( [Esc] i )にして、端末で貼り付け(右ボタンクリック)して保存終了([Esc] :wq [Enter])。
ssh-rsa AAAAB3NzaC1yc2 …省略… AOw/myp7s=
プラン手順【4】
公開鍵のパーミッションを変更する。
$ chmod 600 .ssh/authorized_keys
プラン手順【5】
ファイルのパーミッションが変わったか確認。
$ ls -l .ssh/authorized_keys
-rw------- 1 admin admin 229 2005-11-28 22:14 .ssh/authorized_keys
$ cat .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAA …略
プラン手順【5】
SSHを選び、プロトコルオプションを 2 とする。
SSH2 選択画面
プラン手順【5】
秘密鍵を選ぶ。
RSA 秘密鍵ファイル指定
プラン手順【5】
ファイルの拡張子は ppk で、先ほど作成した秘密鍵を指定しよう。
秘密鍵指定画面
プラン手順【5】
ホスト名を記入し、プロトコルが SSH でポートが 22 であることを確認して Open ボタンをクリック!
プラン手順【5】
ログイン成功したら成功だ、おめでとう!


終了するには exit か logout と打って [Enter] をたたこう。
RSA 認証ログイン成功

Poderosaの場合

最初に Poderosa を起動してパスワード認証でログイン(プラン手順【1】)しておこう。(Poderosa のインストールからログインまではこちら
解説画面の様子
プラン手順【2】
ツール→ SSH 鍵作成ウィザードをクリックする。
メニュー画面
プラン手順【2】
今回はアルゴリズムは RSA を選び、ビット数を 1024 を選び、パスフレーズを入力する。
キー作成
プラン手順【2】
乱数を作るためにマウスをグリグリ動かそう。
マウスグリグリ画面
プラン手順【2】
ある程度グリグリしたら自動的に終わるので、次へボタンをクリックしよう。
グリグリ終了画面
プラン手順【3】
秘密鍵と OpenSSH 形式で公開鍵を保存しよう。
鍵保存画面
プラン手順【3】
秘密鍵は id_rsa としておこう。
秘密鍵保存画面
プラン手順【3】
公開鍵は id_rsa.pub としておこう。
公開鍵保存画面
プラン手順【4】
公開鍵ファイルをメモ帳で開こう。
公開鍵ファイル
プラン手順【4】メモ帳
もし、右図のように折り返し表示の設定なら折り返しをナシにしよう。
右端で折り返し表示状態の図
プラン手順【4】メモ帳
折り返し表示でなくなったら次に進み、
折り返し表示ナシの表示状態の図
プラン手順【4】メモ帳
一行全部を選択してコピーしよう。
メモ帳でコピー
プラン手順【4】
端末でのホームディレクトリで vi ./ssh/authorized_keys と打ってエディタを開こう。
$ vi .ssh/authorized_keys
プラン手順【4】
インサートモード( [Esc] i )になって、端末で貼り付けて保存終了( [Esc] :wq [Enter] )。
貼り付け
プラン手順【4】
公開鍵のパーミッションを変更する。
$ chmod 600 .ssh/authorized_keys
プラン手順【5】
ファイルのパーミッションが変わったか確認しよう。
$ ls -l .ssh/authorized_keys
-rw------- 1 admin admin 229 2005-11-28 22:14 .ssh/authorized_keys
$ cat .ssh/authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAA …略
プラン手順【5】
新しく Poderosa を起動して、ホストを指定し、プロトコルを指定し、ユーザ名を指定し、認証方法に公開鍵を指定して、パスフレーズを入力したら、秘密鍵ファイルを指定しよう。
接続パラメータ入力画面
プラン手順【5】
秘密鍵を指定する。先ほどの id_rsa だ。
秘密鍵指定画面
プラン手順【5】
ログイン成功したら成功!おめでとう。


終了するには exit か logout と打って [Enter] をたたこう。
$ lgout

Memorandum about Linux and Network | ほかのジャンルを見てみる | サイトマップ

免責

beacon

当方(SHIBATA Akira)は, 本サイトをご利用の際に起きるかもしれない不利益に対し, 一切責任を負いません.