ssh接続の公開鍵認証方式の設定手順(SSH Keyの作り方)とTeratermでのログイン方法。

2023年2月2日

sshでサーバにログインするとコマンドにより様々な操作が可能になります。
このためsshで悪意のある第三者にログインされてしまうと非常に危険です。

AWSのEC2や各種Linuxディストリビューション(ubuntu,CentOS等)、ラズパイなどLinuxサーバへsshでログインする認証の方式としては「パスワード認証方式」と「公開鍵認証方式」があります。

一般的に「パスワード認証方式」は簡単でポピュラーですが、逐次アタックやパスワード漏洩などでパスワードが知られてしまった時点でアウトです。
これに対して「公開鍵認証方式」では「鍵ファイル」を持っていないユーザーはログインできません。このためパスワード認証方式に比べて各段に安全になります。
但し鍵認証についての設定は手順を理解しておく必要があり、生成された鍵ファイルは厳重に管理すべきです。

この記事ではPC(Windows)から各種Linuxサーバーへのssh接続の鍵認証方式を設定する方法を説明します。

ssh接続のツールはTeratermを使用する場合を想定して解説します。

1.公開鍵と秘密鍵を作成する

1)Linuxへログインする

まずLinuxへ通常通りユーザーとパスワードでログインします。
(例ではLinuxマシンのIPアドレスは192.168.1.201です)

2)認証用キーを作成する。

Linuxで以下のコマンドで秘密鍵ファイルと公開鍵ファイルを作成します。

 

ssh-keygen -t rsa

 

すると幾つかの質問がありますが、何も入力せずにそのままエンターを押します。

 

3)作成されたキー、ディレクトリのパーミッション設定

コマンドの実行が完了するとホームディレクトリの下に「.ssh」ディレクトリが作成され、そのディレクトリ内にファイルが2つ作成されます。
作成されたファイルはそれぞれ以下の2つとなります。

id_rsa
id_rsa.pub

作成された「.ssh」ディレクトリと鍵ファイルのパーミションを変更します。

chmod 700 ~/.ssh
chmod 600 ~/.ssh/*

この時点で「.ssh」ディレクトリは以下のようになっています。

スポンサードサーチ

2.公開鍵ファイルのリネーム

作成された公開鍵をリネームします。

 

mv id_rsa.pub authorized_keys

 

これは初期状態のssh設定で公開鍵のファイル名が「authorized_keys」とされている為です。
(設定ファイル:/etc/ssh/sshd_config)

スポンサードサーチ

3.秘密鍵をPCへ転送する

作成された秘密鍵をPCに転送します。
Teratermを使用している場合は以下の手順でSCP転送可能です。

1)「ファイル」→「SSH SCP」

2)転送ダイアログに以下の情報を入力して転送する。

①作成された秘密鍵ファイルを指定する。 (~/.ssh/id_rsa)
②PCの転送先ディレクトリを指定する。
③「Receive」をクリックすると転送開始。

 

あるいは「cat id_rsa」で内容を表示してテキストエディタへコピペして保存してください。
最終行の「—–END OPENSSH PRIVATE KEY—–」の後ろでエンターキーを押して改行を入れておいてください。

4.Teratermでサーバーへ接続する手順。

ではTeratermで接続してみましょう。

以下のようにユーザー名とPCに保存した秘密鍵ファイルを指定してログインします。

 

以下のように無事ログインできれば成功です。

 

スポンサードサーチ

5.SSHでうまくログインできない場合

1)「SSH2秘密鍵の読み込みに失敗しました ・・・PEM routines:get_name:no start line」のエラーが出る場合

PCに作成した秘密鍵ファイルの最終行「—–END OPENSSH PRIVATE KEY—–」の後ろに改行が入っていないと出るようです。

PC側に作成した秘密鍵ファイルをテキストエディタで開いて確認してみてください。

あるいは再度SCP転送で秘密鍵ファイルを転送してみてください。

2)「認証に失敗しました」

ログインを試みて下記のように認証エラーが出て接続できない場合は以下を確認してください。

1)ログインしたいユーザーのホームディレクトリのパーミションを最低限「755」にする。
例えばユーザーが「pi」の場合、「/home/pi」のパーミションが最低限755になっていることを確認してください。

ホームディレクトリのパーミションが「777」のように緩い設定だと認証に失敗します。

2)ホームディレクトリに作成された「.ssh」ディレクトリのパーミションが「700」であること。

上記の手順で示したように「.ssh」ディレクトリのパーミションを「700」にしてください。

6.まとめ

秘密鍵をPCに転送してログインできる状態までを説明しました。
この状態ではユーザー名とパスワードを入力してもログイン可能になっています。
鍵ファイルだけでしか認証できないようにしたい場合は別途設定が必要です。
こちらについては後日別記事で解説したいと思います。

 



AWS設定,Linux

Posted by garnet