(最終更新月:2021年10月)
リモートコンピューターやgithubへのアクセスでSSH接続はよく使われますが、その際に
「セキュリティが気になる!」
「いちいちパスワードの入力が面倒くさい!」
という方も多いのではないでしょうか?
当記事では、SSH接続でパスワード入力を不要とする
- 認証鍵によってSSH接続する方法
について解説します
「そもそもSSH接続ってなに?」という方は、↓の記事をご覧いただいてから次章へとお進みください
認証キーによるSSH接続のメリット
認証キーによるSSH接続のメリットは、
- パスワード無しでアクセスできる
- 登録したパソコンでのみアクセス可能となるためより安全性が高い
などが挙げられます
早速みていきましょう!
認証キーとは?
例えていうと、デジタルな割符という表現が一番わかりやすいでしょうか

仕組みとしては、公開鍵を接続先のリモートコンピューターへ渡します(※秘密鍵を渡すことはありません)
SSH接続を試みると、自動的に手持ちの秘密鍵と接続先の公開鍵を照合します
鍵が問題ないとされた場合のみ「認証」となります
認証キーペアを作成する
ローカルコンピューターでターミナル(コマンドプロンプト)を開き、実行していきます
鍵の保存場所
ホームディレクトリ内の「.ssh」フォルダが一般的です
フォルダが存在しない場合は作成し、フォルダへ移動しましょう
【.sshフォルダがある場合】
$ cd ~/.ssh
【.sshフォルダが無い場合】
$ cd ~ && mkdir .ssh && cd .ssh

エラーが出る場合は、
$ chmod 700 ~/.ssh
でアクセス権限を正しいものに変更しよう
いざ、作成!
ssh-keygenコマンドで作成します
$ ssh-keygen
Generating public/private rsa key pair. Enter file in which to save the key (/xxx/xxx/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /xxx/xxx/.ssh/id_rsa. Your public key has been saved in /xxx/xxx/.ssh/id_rsa.pub. The key fingerprint is: SHA256:Y7ibSE3/fsxxsxxAjqvrGPVuCxxxxxxxxxx username@computername.local
何度か入力を求められますが、全てEnterでスキップして構いません
id_rsa.pubとid_rsaの違い
フォルダ内を見てみると、
authorized_keys id_rsa id_rsa.pub
「id_rsa」「id_rsa.pub」というファイルが新たに作られているのがわかります(※「authorized_keys」は元からあるものとします)
公開鍵は「.pub」のつく、
id_rsa.pub
ですので、覚えておきましょう!
以上で作成は完了しました
接続先での設定をみていきましょう
接続先サーバーで公開鍵を設定する
接続先により、公開鍵の設定方法は変わります
クラウドサービス等
githubやDigitalOceanであれば、アカウント設定などにSSH Keysを入力するフォームが存在します
【githubでの例】
githubページ > Account settings

$ cat id_rsa.pub
などでローカルコンピューターの公開鍵を出力し、コピペして完了です!
設定画面などがない場合
リモートコンピューター内で下記のフォルダ、ファイルを作成し、公開鍵をコピペする必要があります
保存場所
ホームディレクトリ内の.sshフォルダ(ローカルコンピューターのときと同じです!)
ファイル名
「authorized_keys」
やること
「authorized_keys」内へローカルコンピューターの公開鍵をコピペしましょう!

接続してみる
githubなどのサービスであれば、実際に使ってみる、もしくはリモートコンピューターに対してであれば、ターミナル上で、
$ ssh <username>@<IPアドレス、もしくはドメインネーム>
例えば、
$ ssh ubuntu@192.168.11.14
などと入力してみます
正しく設定されていれば、パスワードを入力せずに接続が完了します!
いかがでしょうか?
まとめ
公開鍵によるSSH接続を活用すると、
パスワード流出の恐れがない
パスワード入力の手間が省ける
と、安全にWebサーバーへアクセスが可能です
当記事での設定完了後には、パスワードでのログインを不可とすることもオススメです
【パスワードログインを無効にする】
$ sudo nano /etc/ssh/ssh_config
でssh_configへアクセスし、
# PasswordAuthentication yes
を、
PasswordAuthenication no
に変えましょう
ただこれについては、きちんと認証鍵でのアクセスが問題ないことが確認できてから行うことを忘れずに!
✔当ブログは以下のような方に向けて書かれています
「Djangoでのアプリ開発を学びたい!」
「Djangoで開発したアプリをWebで公開するにはどうするの?」
✔当ブログ掲載の記事
- Djangoで作る日報アプリ開発
- WebアプリをWeb上に公開する方法
- Webアプリ開発に必要なそのほかの情報

ITCブログにご協力いただける方は、以下もご検討いただけると嬉しいです。