さくらのVPS(CentOS 7.6.1810)でTeratermを使用して鍵認証でログイン(パスコード有り)する方法 → スクリプトも作成します

未分類

MacでVPSに鍵認証でログインする方法の解説はたくさんありましたが、WindowsでTeratermを利用した方法の解説が少なく、あっても断片的な記事が多かったため、自分なりのポイントなども含めて、備忘録としてまとめました。

用語説明やなぜそのような設定をするかについては最小限だけ記載しました。
興味がある方は「Linux cat」などで検索してみてください。

後半では、パスコードだけの入力で一発ログインできる便利なスクリプトの作成方法もまとめました。

ユーザー名やホストアドレスは適宜読み替えて参考にしてください。

$ aheahe
→ Teraterm で aheahe と入力(一般ユーザーで実行)
# moemoe
→ Teraterm で moemoe と入力(rootユーザーで実行)
なので、$ や # は入力しません。
Teratermのインストールと、さくらのVPSでrootユーザーでのログイン方法はこちら → 記事作成中…

1. 公開鍵でログインするユーザーを作成

# useradd moemoe

↑ rootユーザーでログインし、moemoe(ユーザー名は任意)というユーザーを作成します

通常は、passwdコマンドでパスワードを設定しますが、今回は鍵認証をするので、パスワードは設定しません。

2. SSH サーバの設定に公開鍵の設定がされているか確認

# cat /etc/ssh/sshd_config | egrep ‘(PubkeyAuthentication|AuthorizedKeysFile)’

↑ で項目を指定して設定ファイルを開いて

#PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

となっていることを確認 → 初期状態でこの設定になっているので、通常は編集する必要はありません。

3. 秘密鍵と公開鍵をTeratermで作成

↑ Teraterm を起動して「Tera term:新しい接続」はキャンセルで閉じます

↑ 「設定」→「SSH鍵生成」を開きます

↑ の設定になっていることを確認して「生成」ボタンをクリックします

↑ 「公開鍵の保存」をクリックして、任意の場所に保存します

のちほど使用するので場所は覚えておいてください。

ここではデフォルトの名前「id_rsa.pub」として保存しました。

↑ 「秘密鍵の保存」をクリックする前に、「鍵のパスフレーズ」に簡単な文字列(例えば ehe など)を設定しておくと、パソコンを盗まれてもパスフレーズが分からなければログインできないので、セキュリティ的に良いみたいです。

「パスフレーズの確認」に「鍵のパスフレーズ」と同じ文字列を入力して「秘密鍵の保存」をクリックして、任意の場所に保存します。

ここではデフォルトの名前「id_rsa」として保存しました。

↑ 2つの鍵を保存したら「TTSSH:鍵生成」ウィンドウを「閉じる」ボタンをクリックして閉じます。

4. 公開鍵を作成したユーザーに紐付ける

4-1. 公開鍵を格納するディレクトリを作成

# mkdir /home/moemoe/.ssh
↑ moemoe ユーザーのディレクトリに .ssh というフォルダ(正確にはディレクトリ)を作成します。
sshではなく.sshなのは少し気持ちが悪いですがとりあえずこのままで作成します。
# chmod 700 /home/moemoe/.ssh
↑ 先程作成した /home/moemoe にある .ssh ディレクトリのパーミッション(アクセス権)を700に設定します。
700に設定することで、ファイルの所有者だけが読み書き実行を出来るようにします。
公開鍵は重要なファイルなのでこのように設定しないとエラーが表示されます(多分)。
# chown moemoe:moemoe /home/moemoe/.ssh
↑ 先程作成した /home/moemoe にある .ssh ディレクトリのユーザー所有権とグループ所有権 をmoemoeユーザーに設定します。
とりあえず、moemoe が全部所有するってことにしたいってことですかね。

4-2. 公開鍵を入力するファイルを新規作成する

# touch /home/moemoe/.ssh/authorized_keys
↑ touch コマンドで、/home/moemoe/.ssh に authorized_keys というファイルを新規作成します。
# chmod 600 /home/moemoe/.ssh/authorized_keys
↑ パーミッションを600(所有者 moemoe にのみ変更権限を与える)に設定します。
# chown moemoe:moemoe /home/moemoe/.ssh/authorized_keys
↑ authorized_keys のユーザー所有権とグループ所有権 をmoemoeユーザーに設定します。

4-3. 公開鍵の中身を authorized_keys に追記する

↑ まず、公開鍵(id_rsa.pub)の中身を見るために、メモ帳などに公開鍵(id_rsa.pub)をドラッグ&ドロップします。

↑ すると、こんな感じの内容が表示されます。
よくわからないので所々隠しました

# cat >> /home/moemoe/.ssh/authorized_keys << EOF
ここに公開鍵(id_rsa.pub)の中身を記載します
EOF
↑ このようにTeratermに入力して、公開鍵(id_rsa.pub)の中身を authorized_keys に追記したいのですが、Teratermで改行して連続して入力することはできないっぽいので、先ほどのメモ帳の上に
「cat >> /home/moemoe/.ssh/authorized_keys << EOF」
を挿入し、下に
「EOF」を挿入して

こんな感じになったら、それを全てコピーして、Teratermに入力します。

エンターを押しても何も表示はありませんが

# cat /home/moemoe/.ssh/authorized_keys
と入力して公開鍵(id_rsa.pub)の中身が表示されれば正常に追記できています。
もし
# cat >> /home/moemoe/.ssh/authorized_keys << EOF
ここに公開鍵(id_rsa.pub)の中身を記載します
EOF
と入力して「-bash: ssh-rsa: command not found」と表示された場合は

↑ メモ帳の横幅を変更してみて、EOFの場所がこんなところに来ていたり

↑ cat の前に # が付いていたりしていないか確認してみてください。

↑ メモ帳の「右端で折り返す」を無効にすると3行だけになるので分かり易くなります。

私はこれで少し手こずりました。

5. 公開鍵を利用してログイン

↑ Teratermを再起動し「Tera Term: 新しい接続」ウィンドウの「ホスト」に以下の様に記入します。

moemoe@111.222.33.444 22 /ssh /2 /auth=publickey /keyfile=秘密鍵(id_rsa)のフルパス
  • moemoe:ログインするユーザ名
  • 111.222.33.444:ログインするサーバのホストアドレス
  • 22:サーバ側の接続ポート
  • /ssh /2:SSH2 接続をする事を明記
  • /auth=publickey:公開鍵でログインする事を明記
  • /keyfile=:秘密鍵(id_rsa)のフルパス

↑ パスフレーズを設定しているので、エンターを押すと、上記のウィンドウが表示されますが「OK」をクリックして

↑ 上記のウィンドウで、設定したパスフレーズを入力してエンターを押して

↑ 上記のような表示がされれば、moemoeユーザーで鍵認証でログインが出来ています

参考にさせていただいたサイト
http://www.rouge.gr.jp/~fuku/tips/tera-public/

6. Teratermのスクリプトを利用したログイン方法

こちらのサイトを参考にさせていただきました。
https://qiita.com/clustfe/items/e873f2216724fd7b96fc
https://www.braveryk7.com/tera-term-macro

私は両サイトのいいとこどりをして「鍵認証でログイン.ttl」と秘密鍵(id_rsa)が同じディレクトリにあれば、秘密鍵(id_rsa)のフルパスを記載しなくても「鍵認証でログイン.ttl」をダブルクリックで実行して、パスフレーズを入力すれば、鍵認証でログイン出来るようにしました。

私は分かり易く「moemoe」というフォルダに「鍵認証でログイン.ttl」と秘密鍵(id_rsa)と公開鍵(id_rsa.pub)を全て入れました。

全体のコードは↓のような感じで、これを「鍵認証でログイン.ttl」として保存して

「接続情報」を、今回の場合は以下の様に書き換えれば使用が可能になります。

.ttlファイルなどがあるディレクトリを取得することは出来ましたが、setdir で作業ディレクトリを変更するところが上手く出来ず、strconcat で無理やり?秘密鍵(id_rsa)の絶対パスを結合させました。

結果的には自分の希望する動作が出来たので良しとします。

コメント

タイトルとURLをコピーしました