公開鍵暗号方式ログイン
2021/05/31 13:32
本手順について
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 を起動して表示される「新しい接続」は、「キャンセル」ボタンをクリックして閉じます。
Tera Term での鍵生成
「TTSSH: 鍵生成」の呼び出し
Tera Term のメニューから「設定(S)」→「SSH鍵生成(N)」を選択します。以下の画面が表示されます。
「TTSSH: 鍵生成」での鍵生成
「TTSSH: 鍵生成」で「生成」ボタンをクリックします。鍵が生成されてグレーアウトされていた部分が入力できるようになります。
パスフレーズ入力
入力項目は、以下の通りです。入力項目 | 入力内容 | 備考 |
---|---|---|
鍵のパスフレーズ | 秘密鍵を利用する際のパスフレーズを入力する | |
パスフレーズの確認 | パスフレーズの再入力を行う | |
コメント | コメントを入力する | デフォルトあり |
パスフレーズを入力すると、次のような画面になります。
なお、生成される鍵は 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: 鍵生成」画面を閉じます。公開鍵 (OpenSSH サーバへの登録)
ファイルのアップロード
本手順では対象サーバにコマンドによる処理を行うため、Tera Term でログインします。ログイン後、作成した公開鍵を Tera Term 画面にドラッグ&ドロップ → SCP でログインユーザのホームディレクトリにアップロードします。
公開鍵の登録
アップロードした鍵は ~/.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」ボタンをクリックします。ユーザ名 & パスフレーズ & 秘密鍵利用
ユーザ名を入力します。パスフレーズも入力します。
そのまま同じ画面で Authentication methods から「RSA/DSA/ECDSA/ED25519鍵を使う」を選択します。
秘密鍵に、作成した秘密鍵のパスを入力してください。
入力項目 | 入力内容 | 備考 |
---|---|---|
ユーザ名 | ログイン先サーバのユーザ名 | |
パスフレーズ | 秘密鍵のパスフレーズ | |
Authentication methods | 「RSA/DSA/ECDSA/ED25519鍵を使う」を選択します。 | |
秘密鍵は作成したものを選択します。 "C:\Users\Windows\Downloads\key\id_rsa" | 環境に合わせて読み替えてください。 |
これでセキュリティ的に強固なログインができます。
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