skillup

技術ブログ

サーバー・ネットワーク

SSH鍵認証に関して

投稿日:2017年10月25日 更新日:

SSHの鍵認証についてやり方自体は流れ作業でできていましたが、根本的なところが理解していないので復習。

まずは通常の流れを。

1 クライアント(自分のPC)で公開鍵・秘密鍵を作成。 ssh-keygen コマンドを使います。
ssh-keygenコマンドを叩くと ~/.ssh ディレクトリが作成され、このなかに公開鍵(id_rsa.pub)と秘密鍵(id_rsa)が作られます。

2 サーバー側に公開鍵(id_rsa.pub)を配置します。配置といってもメールなどで送るのではなく、scpコマンドで送るのが正しい方法のようです。ちなみに外部のサービス(たとえばGitbuketやGitHub)などだとサーバーに送ることができないため、id_rsa.pubの内容(ただのテキスト)を登録します。

ちなみにGitHubには https://github.com/${USERNAME}.keys でアクセスすると鍵の情報を見ることができます。

3 サーバー側で鍵の登録をauthorized_keysに登録します。
具体的には

というコマンドを使い登録します。

4 これでクライアントとサーバーが通信することができます。

もちろん公開鍵と秘密鍵両方ないとダメです。原理はリンク参照。

追記

ppkという秘密鍵はputtey形式のものになり、Linuxサーバーだけでやりとりするケースでは使われません。WinSCPなどを使うときには必要になります。いつもWinSCP使ってるんで作ってましたが・・・
id_rsa⇒pem⇔ppk 相互変換

windowsでのgit導入手順

SSH認証鍵をBitbucketに設定

秘密鍵・公開鍵を作成する(Win)

WinSCP の秘密鍵の設定方法

参考リンク

SSH鍵認証について+CakePHP2でのセッション切れ

いつも↑のようにやることが多かったですが、どっちを接続される側におくか(ホスト側)、接続をお願いする側(一般的にはクライアント側)によって変わってきますね。

正しくは今回の記事のように

自分のPC(クライアント) 秘密鍵

サーバー(リモートホスト側) 公開鍵

なのですが、サーバー側で鍵を作って秘密鍵を各人に配布するケースもあります。

よくあるパターンとしては多人数が接続するパターンで各人から公開鍵を回収するのが大変なケースですね。

秘密鍵と公開鍵は、サーバー側(ssh接続される側)で作ろうがクライアント側(sshコマンドを打って接続しに行く側)で作ろうが、どっちでもいいそうな。

共通鍵暗号と公開鍵暗号の解説とSSHでの認証手順

SSHの仕組み!ぼんやりとした理解だったものをすっきりさせようの会

SSHなるものをよくわからずに使っている人のための手引書

-サーバー・ネットワーク
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

ファイル抽出系のシェルスクリプト(主にfind系)

実務であるアプリのログをまとめるスクリプトを書きました。 log1.log log2.log log3.log ・・・・ みたいにローテーションして吐かれていくのですが、量が多いので1日分をまとめるこ …

no image

apacheでのバーチャルホストの設定

このブログを旧サイトから移管し、同一ホストで別々のドメインを運用することになったので、バーチャルホストの設定を行いました。 Contents1 設定方法1.1 http.conf1.2 実際のバーチャ …

no image

PHP7に関して

先週きづいたのですが、PHPが5.6から7になりましたね。 まあ当分はまだPHP5で開発していきますが、herokuがいきなり7になり、アプリが動かないということが起こりました。 7対応させたかったん …

no image

composerでのライブラリ登録

今回はPHPのパッケージ管理ツールであるcomposerへのライブラリ登録を。 Contents1 ライブラリの作成2 packagistへの登録3 呼び出す側3.1 composer.json3.2 …

no image

herokuでのhttpd.conf設定

前回の記事でLet’s EncryptでSSL設定する場合、 http://ドメイン/.well-known/ というURLにアクセスする必要があります。 ただherok …