Open kurodakazumichi opened 6 years ago
暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコル。 Macのterminalでsshコマンドを使えば別のコンピューターと通信できる。(TeraTermみたいな)
ユーザIDとパスワードを入力することで他のコンピュータに接続して通信する方式、これは一般的だし特にわからないこともない。
秘密鍵と公開鍵の2つを使って他のコンピューターに接続する方式、これがどういうことなのかよくわからないところ。
あいうえお
鍵
*****
~~答えはどちらでもいい。 ただし秘密鍵で暗号化した場合、元に戻すには公開鍵が必要になる。 逆に公開鍵で暗号化した場合、元に戻すには秘密鍵が必要になる。~~
これじゃぁ公開鍵が漏れたら一方の通信は丸裸だし意味ないよねって思い調べ直した。 秘密鍵と公開鍵は通信の内容を暗号化するためではなく お互いの間で使用する共有鍵の受け渡しで使用される。 実際の通信は共通鍵を使って暗号化複合かが行われる。
まずは秘密鍵と公開鍵を作成する。 そして通信したい相手に公開鍵を渡す。 簡単に言えばこの下準備をすれば公開鍵認証が行えるようになる。
Terminalでssh-keygenとすると~/.sshに以下2つのファイルが作成される。
ssh-keygen
~/.ssh
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:
id_rsa.pub
コピーする方法はなんでもいいがscpを使うならこんな感じ
scp
scp ~/.ssh/id_rsa.pub user@hoge.com:/home/hoge/.ssh/
この時パスワードを聞かれたらサーバーのパスワードを入力する。 公開鍵をコピーしたら、sshなどでひとまずそのサーバーに接続する。
こんな感じでauthrized_keysに追記。権限を600にしておく。 公開鍵はもういらないので削除してOK。
cd ~/.ssh cat id_rsa.pub >> authorized_keys chmod 600 suthorized_keys rm id_rsa.pub
以上、これで公開鍵認証方式による通信が可能になる。
sshとは
暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコル。 Macのterminalでsshコマンドを使えば別のコンピューターと通信できる。(TeraTermみたいな)
パスワード認証方式と公開鍵認証方式
パスワード認証方式
ユーザIDとパスワードを入力することで他のコンピュータに接続して通信する方式、これは一般的だし特にわからないこともない。
公開鍵認証方式
秘密鍵と公開鍵の2つを使って他のコンピューターに接続する方式、これがどういうことなのかよくわからないところ。
公開鍵認証についてざっくりと
あいうえお
という文字を鍵
を使って暗号化すると*****
こんな感じで外からわからないものにできる。暗号化に使うのは秘密鍵か公開鍵か?
~~答えはどちらでもいい。 ただし秘密鍵で暗号化した場合、元に戻すには公開鍵が必要になる。 逆に公開鍵で暗号化した場合、元に戻すには秘密鍵が必要になる。~~
これじゃぁ公開鍵が漏れたら一方の通信は丸裸だし意味ないよねって思い調べ直した。 秘密鍵と公開鍵は通信の内容を暗号化するためではなく お互いの間で使用する共有鍵の受け渡しで使用される。 実際の通信は共通鍵を使って暗号化複合かが行われる。
公開鍵認証をするためには
まずは秘密鍵と公開鍵を作成する。 そして通信したい相手に公開鍵を渡す。 簡単に言えばこの下準備をすれば公開鍵認証が行えるようになる。
公開鍵認証方式のやり方
手順
秘密鍵、公開鍵を作成する
Terminalで
ssh-keygen
とすると~/.ssh
に以下2つのファイルが作成される。ssh-keygen
とすると以下のようにファイル名やパスフレーズを聞かれるが基本そのままEnterでいい、パスフレーズを省略すると接続時にパスワード入力が不要になる。接続したいPCに公開鍵(
id_rsa.pub
)をコピーする。コピーする方法はなんでもいいが
scp
を使うならこんな感じこの時パスワードを聞かれたらサーバーのパスワードを入力する。 公開鍵をコピーしたら、sshなどでひとまずそのサーバーに接続する。
公開鍵をauthorized_keysに追記する。
~/.ssh
にある、なければ作成すればよい。こんな感じでauthrized_keysに追記。権限を600にしておく。 公開鍵はもういらないので削除してOK。
以上、これで公開鍵認証方式による通信が可能になる。