公開鍵暗号方式ログイン

はてブ数 2021/05/31 13:32 Tera Term::使い方

本手順について

ssh は、生成した秘密鍵・公開鍵のセットのうち、公開鍵をログイン対象に登録した後、秘密鍵を利用して対象にアクセスする方式です。

概要としては、次の図のとおりです。
sshの公開鍵登録


ここでは主に、Tera Term で鍵のセットを生成するところから、Linux にどう登録し、どうアクセスするのか、というところまでを記載しています。

本手順書での格納先

本手順で利用する各ファイルの格納先です。
環境に合わせて読み替えてください。
利用ファイル一覧
対象ファイル格納先備考
公開鍵"C:\Users\Windows\Downloads\key\id_rsa.pub"Tera Term で生成します。
秘密鍵"C:\Users\Windows\Downloads\key\id_rsa"Tera Term で生成します。

公開鍵暗号方式では、2つで1組となる鍵を利用します。

公開しても問題ない鍵を、公開鍵と読んでいます。
誰に参照されても問題になる可能性が低いので、アクセスしたいサーバに置く用途に向いています。

公開鍵の対となる秘密鍵は、誰にも渡さない限り安全が保たれます。
ネット上で送信すること自体が危険を含むため、アクセス元で生成することが望ましいです。

秘密鍵を持っている人は、公開鍵が置かれたサーバにアクセスすることが比較的容易になる可能性が高いです。
取り扱いには、十分な注意が必要です。

ログイン対象 SSH サーバ

Linux にインストールされた OpenSSH サーバへのログインを想定しています。

Tera Term での鍵作成

OpenSSH で利用する鍵ファイルを作成します。

本手順では Tera Term の機能を利用して鍵生成する方法を説明します。

Tera Term の起動

Tera Term を起動します。
起動方法は Tera Term の起動と終了 を参照してください。

Tera Term を起動して表示される「新しい接続」は、「キャンセル」ボタンをクリックして閉じます。

new-connection.png

Tera Term での鍵生成

「TTSSH: 鍵生成」の呼び出し
Tera Term のメニューから「設定(S)」→「SSH鍵生成(N)」を選択します。
ttm-ssh-gen_1.png


以下の画面が表示されます。
ttm-ssh-gen_2.png

「TTSSH: 鍵生成」での鍵生成
「TTSSH: 鍵生成」で「生成」ボタンをクリックします。
鍵が生成されてグレーアウトされていた部分が入力できるようになります。
パスフレーズ入力
入力項目は、以下の通りです。
入力項目一覧
入力項目入力内容備考
鍵のパスフレーズ秘密鍵を利用する際のパスフレーズを入力する
パスフレーズの確認パスフレーズの再入力を行う
コメントコメントを入力するデフォルトあり
その他は ssh2 を使う限り、デフォルトで問題ありません。

パスフレーズを入力すると、次のような画面になります。
ttm-ssh-gen_3.png


なお、生成される鍵は pem 形式なので、SSL 通信等で使われる証明書の鍵にできます*1
パスフレーズを設定した鍵の場合は httpd を再起動するたびにパスフレーズを入力する必要があるので、使い勝手を考慮して空白のまま生成して使われます。

生成した鍵の保存

生成した鍵を、それぞれ安全な場所に保存します。
公開鍵
「TTSSH: 鍵生成」画面の「公開鍵の保存(I)」ボタンをクリックします。

任意のフォルダへ保存してください。
本手順では C:\Users\Windows\Downloads\key\id_rsa.pub としています。
秘密鍵
「TTSSH: 鍵生成」の「秘密鍵の保存(P)」ボタンをクリックします。

任意のフォルダへ保存してください。
本手順では C:\Users\Windows\Downloads\key\id_rsa としています。

なお、自身が利用する秘密鍵は、他人の手に渡った時点で危険です。
適切に管理する必要があります。

「TTSSH: 鍵生成」画面を閉じる

画面右の「閉じる」ボタンをクリックして「TTSSH: 鍵生成」画面を閉じます。

*1 : Putty で使う暗号鍵は独自形式なので、変換する必要があります

公開鍵 (OpenSSH サーバへの登録)

ファイルのアップロード

本手順では対象サーバにコマンドによる処理を行うため、Tera Term でログインします。

ログイン後、作成した公開鍵を Tera Term 画面にドラッグ&ドロップ → SCP でログインユーザのホームディレクトリにアップロードします。

id_rsa.pub-scp-upload.png

公開鍵の登録

アップロードした鍵は ~/.ssh/authorized_keys に追記する必要があります。
$ cd
$ [ -d .ssh ] || mkdir .ssh
$ chmod 700 .ssh
$ cat id_rsa.pub >> .ssh/authorized_keys
$ chmod 600 .ssh/authorized_keys
なお、登録した鍵の最後 (==の後) に、入力したコメントが入っていることが確認できます。
そのまま入れておくと、後で公開鍵を削除したい場合に悩まずに済みます。
$ cat .ssh/authorized_keys
また、登録を終えた公開鍵は、不要なので消しておきます。
$ rm id_rsa.pub

接続

Tera Term

Tera Term 起動
Tera Term を起動して表示される「新しい接続」で、アクセスしたいホスト (公開鍵を登録したホスト) を入力して「OK」ボタンをクリックします。

new-connection.png

ユーザ名 & パスフレーズ & 秘密鍵利用
ユーザ名を入力します。
パスフレーズも入力します。
そのまま同じ画面で Authentication methods から「RSA/DSA/ECDSA/ED25519鍵を使う」を選択します。
秘密鍵に、作成した秘密鍵のパスを入力してください。

SSHAuth.png

入力項目一覧
入力項目入力内容備考
ユーザ名ログイン先サーバのユーザ名
パスフレーズ秘密鍵のパスフレーズ
Authentication methods「RSA/DSA/ECDSA/ED25519鍵を使う」を選択します。
秘密鍵は作成したものを選択します。
"C:\Users\Windows\Downloads\key\id_rsa"
環境に合わせて読み替えてください。
上記を入力し終えたら「OK」ボタンをクリックします。

これでセキュリティ的に強固なログインができます。

Tera Term コマンドライン

コマンドプロンプトからログインするには、以下のパラメータを指定します。
> ttermpro.exe example.jp:22 /ssh2 /auth=publickey /user=username /passwd=**** /keyfile="C:\Users\Windows\Downloads\key\id_rsa"
各パラメータは、適切に読み替えてください。

Tera Term マクロ

次のマクロでログインすることが可能です。
hostname = 'example.jp'
portnumb = 22
username = 'username'
keyfile  = "C:\Users\Windows\Downloads\key\id_rsa"

passwordbox 'Enter password' 'Login'

sprintf2 msg "%s:%d /ssh2 /auth=publickey /user=%s /passwd=%s /keyfile=%s" hostname portnumb username inputstr keyfile

; 念のため、パスフレーズを表示させない処置
connect '/DS'

; 接続処理
connect msg
ログイン毎にパスフレーズの入力が必要です。

検証環境

本手順を検証した環境は、以下の通りです。

アクセス元

BTO PC - Windows 10 Pro (バージョン 1903 OS ビルド 18362.239)
Tera Term バージョン 4.103

アクセス先

Raspberry Pi - Raspbian 9 (Debian 9 - Stretch)