前回の記事では、パスワードを使った最も簡単な接続を紹介しました。
次はもう少しセキュリティを高めた方法を紹介します。
前回同様、会社のデスクトップパソコン(Main PC)を社内のどこからでも自分のノートPC(My PC)で接続できるようにします。
サーバー:Main PC
クライアント:My PC
open-sshと付属のパッケージをインストールします。こちらは以前の記事を御覧ください。
まず、セキュリティを高めるために、SSH接続では「秘密鍵」と「公開鍵」ファイルを理解しましょう。
これら~~「鍵」はSSH接続を開始し、~~~通信内容を暗号化・復号化するためにつかわれるものです。
例えば、自分のノートPC(My PC)から会社のデスクトップPC(Main PC)をSSH接続で操作するときにパスワードを使ってログインしていると、自分以外の誰かが操作できる可能性がでてきます。また、SSH接続の内容を他人が読み取る可能性もあります。
そこで、通信接続をはじめる際にパスワードを用いないで2台のPCを接続し、更に2台のPC間の通信内容を暗号化し、2台のPC間でしか復号化できないようにする事を実現したものが上記の2つの「鍵」です。
実際のSSH接続では、My PCで2つの鍵を生成し、そのうちの「公開鍵」をMain PCに登録します。My PCでは「秘密鍵」を使って通信を暗号化します。この暗号化した通信をMain PCは受け取り、公開鍵で復号化します。
では、「秘密鍵」と「公開鍵」を作成しましょう。こちらからはMy PC(自分のノートPC)で操作します。
$ ssh-keygen -b 2048
上記を打つと、どこに2つの鍵を生成するか聞かれます。デフォルトの~/.sshで良いと思います。
次に上記の鍵を実際に鍵として使うためのパスワードを求められます。
このパスワードは忘れないでください。
(簡単にいうと、2つの鍵のうち秘密鍵はパスワードでしか開かない封筒に入れられてる状態で生成されるためです。実際に接続するときにはこのパスワードを一度いれて封筒から秘密鍵を取り出さないと使えません。)
次に、鍵が生成されたか確認しましょう
$ ls ~/.ssh
id_rsa id_rsa.pub
鍵の生成場所は今回、~/.ssh (/home/user/.ssh)ですので、そこのファイルをlsで表示させます。
すると2つのファイルがあると思います。
id_rsa=秘密鍵
id_rsa.pub=公開鍵(pub=publication)
できました!!!!
それでは、この公開鍵をMain PCに持ってけばいいんですが、どこに置くか、どうやって持っていけばいいのか....面倒な人は以下を実行すれば勝手に公開鍵をMain PCに登録してくれます。
$ cd ~/.ssh #1
$ ssh-copy-id -i id_rsa.pub user@192.168.1.1 #2
(ssh-copy-id -i 公開鍵名(パスの指定もできます) Main PC(サーバー)のユーザー名@Main PCのIP)
#1で公開鍵の保存場所に移動します。
#2で~/.sshのid_rsa.pubを公開鍵に指定して、サーバー(Main PC)に送信しています。
サーバー(Main PC)のユーザー名やIPアドレスの調べ方は、以前の記事でお書きしていますので、そちらを参照ください。
実行するとMain PCのログインパスワードを聞かれますので入力してください
これで、My PCの公開鍵がMain PCに登録されました。
さて、後は接続です。
これまた結構簡単です。
$ cd ~/.ssh
$ ssh -I id_rsa(パスの指定でもOK:~/.ssh/id_rsa) user@192.168.1.1
あれ?パスワード聞かれる....意味ないんじゃ?
そうです。このパスワード認証をオフにしましょう。
次回の記事で書きます!!