kurodakazumichi / issues

0 stars 0 forks source link

sshの公開鍵認証方式について #2

Open kurodakazumichi opened 6 years ago

kurodakazumichi commented 6 years ago

sshとは

暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコル。 Macのterminalでsshコマンドを使えば別のコンピューターと通信できる。(TeraTermみたいな)

パスワード認証方式と公開鍵認証方式

パスワード認証方式

ユーザIDとパスワードを入力することで他のコンピュータに接続して通信する方式、これは一般的だし特にわからないこともない。

公開鍵認証方式

秘密鍵と公開鍵の2つを使って他のコンピューターに接続する方式、これがどういうことなのかよくわからないところ

公開鍵認証についてざっくりと

暗号化に使うのは秘密鍵か公開鍵か?

~~答えはどちらでもいい。 ただし秘密鍵で暗号化した場合、元に戻すには公開鍵が必要になる。 逆に公開鍵で暗号化した場合、元に戻すには秘密鍵が必要になる。~~

これじゃぁ公開鍵が漏れたら一方の通信は丸裸だし意味ないよねって思い調べ直した。 秘密鍵と公開鍵は通信の内容を暗号化するためではなく お互いの間で使用する共有鍵の受け渡しで使用される。 実際の通信は共通鍵を使って暗号化複合かが行われる。

公開鍵認証をするためには

まずは秘密鍵と公開鍵を作成する。 そして通信したい相手に公開鍵を渡す。 簡単に言えばこの下準備をすれば公開鍵認証が行えるようになる。

公開鍵認証方式のやり方

手順

  1. 秘密鍵と公開鍵を作成する。これは自分の使っているPCで作成する。
  2. 公開鍵と言われるものを接続したいPCに保存する。

秘密鍵、公開鍵を作成する

Terminalでssh-keygenとすると~/.sshに以下2つのファイルが作成される。

ssh-keygenとすると以下のようにファイル名やパスフレーズを聞かれるが基本そのままEnterでいい、パスフレーズを省略すると接続時にパスワード入力が不要になる。

$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/puyan/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 

接続したいPCに公開鍵(id_rsa.pub)をコピーする。

コピーする方法はなんでもいいがscpを使うならこんな感じ

scp ~/.ssh/id_rsa.pub user@hoge.com:/home/hoge/.ssh/

この時パスワードを聞かれたらサーバーのパスワードを入力する。 公開鍵をコピーしたら、sshなどでひとまずそのサーバーに接続する。

公開鍵をauthorized_keysに追記する。

こんな感じでauthrized_keysに追記。権限を600にしておく。 公開鍵はもういらないので削除してOK。

cd ~/.ssh
cat id_rsa.pub >> authorized_keys
chmod 600 suthorized_keys
rm id_rsa.pub

以上、これで公開鍵認証方式による通信が可能になる。