【Linux】初回ログインとその後のログイン
エンジニアを目指す初心者の方からLinuxの質問をちょこちょこ受けるので、軽くシリーズとしてまとめるつもりで記事にします。
初回のテーマはログインです。ここでのログインは、ブラウザ上から管理画面にログインするものではなく、ターミナル等からSSHコマンドでリモートサーバーにログインする事をさします。
本当に初めて触る方は、上記の言葉も難しいかもしれませんが、記事を通して少しでも伝わればと思います。
環境
- AlmaLinux
- macOS
多少やり方は異なりますが、windowsでも必要な作業は同じなので、手順を調べてみてください。
初回のログイン
クラウドサービスやVPSをはじめて利用する時に、最初にやることがログインだ!最初のログインは、サービス側から与えられた情報でログインすることになる。ログインする方法は主に2パターンだ。
- パスワードでログインする方法
- 公開鍵認証でログインする方法
使うサービスによって、初回のログイン方法は異なります。
パスワードで初回ログインする
パスワードでログインするサービスの場合には、インスタンスを契約した際にパスワードが送られてくるか、そもそもインスタンスを起動する時にパスワードを入力させられるか、どちらかでしょう。
とにかくパスワードが共有されたら、パスワードでログインしてくれということです。
それと、もう一つ大事なことは、ユーザー名です。パスワードだけ持っていても、ユーザー名が分からないとログイン出来ません。どこかに書いてあるので、確認してみましょう。(とりあえずrootユーザーで試してみて、ログイン出来ない場合は、どこかに記述されてないか確認してみると良いでしょう)
ターミナルを開き次のコマンドを実行します。
ssh [IPアドレス] -l [ユーザー名]
→ この後、パスワードを聞かれるので、入力するとログインできます。
具体的には↓こんな感じです。(ユーザー名はrootではない場合もあります)
初めてログインする際には・・・
SSHでログインする際、はじめてログインするインスタンスでは、こんな表示が出るかもしれません。
The authenticity of host 'IPアドレス (IPアドレス)' can't be established.
ED25519 key fingerprint is SHA256:i7rxVD9FEBE+bs82GFbyzKd1P7UqjeC59KP/C+aE6bQ.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])?
SSHでは、接続したインスタンスの情報を取得しておいて、次回ログインする際に同じホストかどうかを確認しており、known_hostsというファイルに保存されています。(~/.ssh/known_hosts)はじめてのログインの際には、「このキーは保存されていませんよ。接続しますか?」というこのメッセージが出ますので「yes」と入力して、続行して問題ありません。
SSH公開鍵で初回ログインする
公開鍵ログインする場合には、インスタンスを作成する時点で事前に登録してある鍵を選択するパターンがほとんどだと思います(EC2など)。そこで指定した鍵を使ってログインすることになります。
さらに、パスワードログインのときと同じで、ログインするユーザー名も必要になります。
ターミナルを開き次のコマンドを実行します。
ssh [IPアドレス] -l [ユーザー名] -i [秘密鍵]
具体的には、↓こんな感じです。
これで無事に初回ログインが出来ると思います。
2回目以降のログインについての注意
初回ログインの方法を使い続けるのは禁止
2回目以降のログインについても、もちろん初回と同じログイン方法でログインし続けることも可能です。ただし、可能ではありますが推奨はされません。(というか、絶対にやめてください!)
SSHログインというのは、部外者に絶対に許してはいけない砦です。万が一サービスを稼働させてから、他人に侵されてしまうと致命的です。初回ログインの情報は、サービス側からパスワードが送られてきたりだとか、使用するSSH鍵をWEB上で選択したりだとか、少なからずどこかと関わりがある状態です。必要な人以外が触れてない情報のみで構成するべきものと考えましょう。
また、個人ではなく複数人で作業するようなサーバーの場合には、言わずもがな、全員で初回ログインを使い続けるわけにはいきません。必ず全員分の個別ユーザーを作成し、必要な人にのみ管理者権限を与える運用にしましょう。その意味でもこの作業は必要不可欠です。
2回目以降のログインは公開鍵認証を使う
初回のログイン方法として、パスワードでログインする方法も使われている話をしましたが、2回目以降はパスワードログインはオススメしません。
これは単純な理由で、パスワードによる認証を続けている場合は、ユーザー名とパスワードが漏洩した場合に他人がログイン出来てしまうからです。毎回パスワードを入力する事になるので、入力するところを見られるだけでもリスクなわけです。
そのため次に説明する公開鍵認証を使うことをオススメします。(というか強制したい)
公開鍵認証の設定
公開鍵と秘密鍵を生成する
というわけで、公開鍵認証の設定方法となりますが、まずは鍵を生成する必要があります。下記コマンドで生成します。この作業は自分のPC上で行います。
実行すると、鍵の保存場所やパスフレーズを聞かれますが、今回は保存場所はデフォルトのままで、パスフレーズはなしで生成するので、何も入力せずにEnterを3回押します。
【注意】すでに鍵が存在する場合上書きされてしまうので注意が必要です
ssh-keygen -t rsa
# 実行結果
-------
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/supilog/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/supilog/.ssh/id_rsa.
Your public key has been saved in /Users/supilog/.ssh/id_rsa.pub.
The key fingerprint is:
The key's randomart image is:
+---[RSA 3072]----+
|=*o ..... o |
|=o . = oo|
|= . . . . + o =|
| + . o + = = . o.|
|o + o . S * o . .|
| o * . . + + . |
|. o + . . E . |
|o. . . . |
|o . |
+----[SHA256]-----+
-------
生成された鍵を確認してみよう
【デフォルトでは、ユーザーのホームディレクトリにある.ssh配下に生成されます】
--------------------
-rw------- 1 supilog staff 1679 2 16 2018 /Users/supilog/.ssh/id_rsa
-rw-r--r-- 1 supilog staff 424 2 16 2018 /Users/supilog/.ssh/id_rsa.pub
--------------------
「.pub」と拡張子がついたものが公開鍵で、ついていないものが秘密鍵です。
秘密鍵は自分のPCの中に大切に保管し、公開鍵はログインしたいサーバーに設置します。そうすることで、その鍵同士が正しいペアであることが確認されればログイン出来る仕組みです。
鍵生成の際は上書きに注意してください。
上記の実行結果では、ファイルパス/Users/supilog/.ssh/id_rsaに鍵が生成されようとしていますが、このファイルがすでに存在していた場合、上書きしてしまいます。
例えばもうすでに鍵を持っているが、2個目の鍵を生成したい場合などには注意が必要です。上書きで鍵を失ってしまうと、その鍵を使って利用していたサービスが利用できなくなってしまう危険があります。そのような場合は、ファイル名を指定して生成するのがよいでしょう。
# ファイル名を指定して鍵を生成する方法
# カレントディレクトリに、「id_rsa_hoge」と「id_rsa_hoge.pub」が生成される
ssh-keygen -t rsa -f id_rsa_hoge
【注意】.sshディレクトリではなく、カレントディレクトリに生成されるので注意
公開鍵をリモートサーバーに設定する
初回ログインの方法でサーバーにログインを行い、root権限で作業を行います。
※「supilog」の部分を書き換えてご利用ください。
# ログインユーザーの作成(今回はsupilogユーザーを作成します)
useradd supilog
# .sshディレクトリを作成
mkdir -p /home/supilog/.ssh/
# authorized_keysを作成
vi /home/supilog/.ssh/authorized_keys
------------------
公開鍵のファイルの中身を貼り付けて保存
------------------
【注意】手書きで作成していますが、scpしても問題ありません
# パーミッション設定
chmod 600 /home/supilog/.ssh/authorized_keys
chmod 700 /home/supilog/.ssh/
chown -R supilog:supilog /home/supilog/.ssh
これでログインが可能になっているはずです。下記コマンドで試してみましょう。
ssh [IPアドレス] -l [新たに作成したユーザー名] -i [秘密鍵のパス]
※ログイン元とログイン先でユーザー名が同じ場合には、ユーザー名の指定は省略可能
※使用する秘密鍵が、~/.ssh/id_rsaの場合は秘密鍵の指定は省略可能
まとめ
書いてから読み返してみましたが、まったくの知識なしでは難しい内容になってしまっていますね。大変心苦しい限りです。ですが、基本であり非常に重要なことなので考えるより慣れろの精神でいきましょう。少し知識がついて振り返る時に、ちょうどよい位かもしれません。
今回の話でとくに重要なのは、「2回目からのログインには、個別のユーザーでの公開鍵認証を利用する!」ということ。
それだけでも覚えて帰ってくださいm