Teraterm で公開鍵ログイン
〜 パスワードありでもなしでも 〜
2018-09-27 作成 福島
TOP > tips > tera-public
0. インストール要件
SSH サーバ
種類内容備考
OSCentOS 7.5 (1804)本稿記述時の最新版
SSH サーバOpenSSH_7.4p1
OpenSSL 1.0.2k
CentOS 7.5 に付属の物
SSH サーバ IPアドレス192.168.56.102-
SSH サーバ ポート番号22-
ユーザ名sshuser-
グループ名sshuser-
ユーザのホームディレクトリ/home/sshuser/.ssh/ ディレクトリを作成します
ユーザの公開鍵格納ディレクトリ/home/sshuser/.ssh/パーミッションは 700 にします
ユーザの公開鍵ファイル/home/sshuser/.ssh/authorized_keysパーミッションは 600 にします

SSH クライアント
種類内容備考
WindowsWindows10 (1803)本稿記述時の最新版
端末エミュレータTeraterm Version 4.100本稿記述時の最新版
秘密鍵・公開鍵を作成するフォルダPC > ドキュメント > PubKeys実フォルダは
C:\Users\UserName\Documents\PubKeys\
秘密鍵のファイル名id_rsaTeraterm のログイン時に使用する
秘密鍵のパスフレーズ(なし)今回はパスフレーズを設定しません
公開鍵のファイル名id_rsa.pub.ssh/authorized_keys に追記する
UserName は、Windows のユーザ名を指します。
※ Teraterm のインストールは簡単なので省略します。
1. SSH サーバを設定
1-1. SSH サーバの設定に公開鍵の設定がされているか確認する
$ ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
$ su
# cat /etc/ssh/sshd_config | egrep '(PubkeyAuthentication|AuthorizedKeysFile)'
#PubkeyAuthentication yes 公開鍵のログインを受け付ける※1
AuthorizedKeysFile .ssh/authorized_keys 公開鍵を格納するファイル名※2
※1 PubkeyAuthentication は省略時に yes が設定されます。つまり意図的に no が指定されていなければ OK。
※2 各ユーザのホームディレクトリが省略されているので、今回は /home/sshuser/.ssh/authorized_keys となります。
2. ユーザを作成
2-1. ユーザを作成する (公開鍵ログインをするため、パスワードは設定しない)
# useradd sshuser
# passwd sshuser    # <-- パスワードは設定しない
# usermod -s /sbin/nologin sshuser    # <-- シェルを変更するとコマンド入力が使えなくなる
# usermod -d / sshuser    # <-- ホームディレクトリを変更すると .ssh/authoroized_keys が使用不能になる
3. 秘密鍵・公開鍵の作成
3-1. Teraterm を起動する

3-2. メニューから「設定(S)」-「SSH鍵生成(N)」を選択する

3-3. 鍵生成のウィンドウ「TTSSH: 鍵生成」が表示されるので をクリックする

3-4. 秘密鍵・公開鍵鍵が生成さると「鍵を生成しました。」が表示されるので、それぞれをファイルに保存する。
ここでは「鍵のパスフレーズ」(秘密鍵のパスワードのこと) を未記入にしているため、警告ウィンドウが表示される。
秘密鍵はコピーすると誰でも使えてしまうため、Windows で共有アカウントを使用する場合は、必ずパスワードを設定すること

ボタンをクリックする -> 3-5 へ
ボタンをクリックする -> 3-6 へ

警告ウィンドウ
3-5. 秘密鍵の保存
上記 3-4 で ボタンをクリックするとファイル保存のウィンドウが表示されるので、
フォルダとファイル名を指定し ボタンをクリックする。

保存フォルダPC > ドキュメント > PubKeys
保存ファイルid_rsa

ファイルの内容例:
-----BEGIN RSA PRIVATE KEY-----
MIIEoAIBAAKCAQEAky+GyrQv1PdqDOlnfn6TNEvVkmmlRvGWReAr+PzXT852mY4K
t0IhyVxK08nLxRIVPALpSu7hjWMMzwAKHJkxE6tNbk2WjqFZJK8XVFC5aB4TWBAW
AwglYohpoysCqbyqr1Fc (~長いので省略~) mHe/wvux01CN/O06aCz0/2T+
xnbVS+Y7tQzOaIxC8dNV0nRGRNydcQ6/nYr6TgbAnOgzRNt9qtgDCArjWZexB7Is
Iiz1gBjNZsODBrkoQUCrYW9eu8K6lg8xRc1Ig+k9sjhgFRl5
-----END RSA PRIVATE KEY-----

3-6. 公開鍵の保存
上記 3-4 で ボタンをクリックするとファイル保存のウィンドウが表示されるので、
フォルダとファイル名を指定し ボタンをクリックする。

保存フォルダPC > ドキュメント > PubKeys
保存ファイルid_rsa.pub

ファイルの内容例:
ssh-rsa AAAAB3NzaC1yc (~長いので省略~) weu6NSNO245DScrekQ== sshuser

3-7. 鍵生成の終了
をクリックし、「TTSSH: 鍵生成」を閉じる


4. 公開鍵の設定
4-1. 公開鍵を格納するディレクトリとファイルを (空で) 作成する。
# mkdir /home/sshuser/.ssh
# chmod 700 /home/sshuser/.ssh
# chown sshuser:sshuser /home/sshuser/.ssh

# touch /home/sshuser/.ssh/authorized_keys
# chmod 600 /home/sshuser/.ssh/authorized_keys
# chown sshuser:sshuser /home/sshuser/.ssh/authorized_keys
4-2. 上記 3-1 で保存した公開鍵を公開鍵ファイルに追記する。
# cat >> /home/sshuser/.ssh/authorized_keys << EOF
ssh-rsa AAAAB3NzaC1yc (~長いので省略~) weu6NSNO245DScrekQ== sshuser
EOF
※ページの都合上、(~長いので省略~) と記述していますが、実際に省略してはいけません。
5. 公開鍵を利用してログイン
5-1. Teraterm を起動し、作成した秘密鍵を使用してログインする。

「新しい接続」ウィンドウの「ホスト(T)」には下記を記入する。
sshuser@192.168.56.102 22 /ssh /auth=publickey /keyfile=C:\Users\UserName\Documents\PubKeys\id_rsa
sshuser:ログインするユーザ名
192.168.56.102:ログインするサーバ
22:サーバ側の接続ポート
/ssh:SSH 接続をする
/auth=publickey:公開鍵でログインする
/keyfile=フルパス:秘密鍵ファイルの場所

秘密鍵にパスフレーズを設定した場合
上記 3-4 で「鍵のパスフレーズ」にパスワード文字列を記入した場合は、このウィンドウが表示される。
「SSH2秘密鍵の読み込みに失敗しました error:06065064:digital envelope routines:EVP_DecryptFinal_ex:bad decrypt」

「パスフレーズ(P)」に、上記 3-4 で設定したパスフレーズと同一の文字列を記入して ボタンをクリックする。


あるいは、下記のように「/passwd=パスフレーズ」を付加して接続する。
(パスフレーズが見えてしまうので非推奨)
sshuser@192.168.56.102 22 /ssh /auth=publickey /keyfile=C:\Users\UserName\Documents\PubKeys\id_rsa /passwd=●●●●●
5-3. ログイン成功