SSHログインを簡略化するには?
こんにちは、4月に入社いたしましたNです。
SSH接続時にユーザや接続先のサーバ、秘密鍵など様々な要素を
指定する必要があるかと思います。
ただ毎回それらを指定するのは面倒なので、ログイン時に
それらの指定を省略する方法について紹介していきます。
※本記事ではAWSのEC2を用いて検証します
SSHについて
SSH接続にてユーザ指定・公開鍵認証を用いて接続を行う際、
以下のようなコマンドを入力するかと思います 。
▼ コマンド例
$ ssh -i 秘密鍵 ユーザー名@{EC2のIP}
しかし、ログイン毎に秘密鍵などを指定することは面倒なので
$ ssh ユーザー名
といった形式で接続できるように設定を行っていきます。
ssh configについて
上記のように簡略化したSSH接続を行うにはssh configファイルの設定が必要です。
ssh configファイルとは、SSHクライアント用(接続する方)の設定ファイルです。
SSH接続の動作を制御するためのさまざまな設定項目が含まれています。
▼主な設定項目
Host : 接続するホストのエイリアス Hostname : IPアドレス または ホスト名 User : 接続時のユーザー名を指定 IdentityFile : 秘密鍵ファイルのパスを指定 Port : SSH 接続に使用するポート番号を指定します
これらの項目以外にも多くのパラメータがあるので、用途に応じて設定を行います。
設定作業
それでは実際に設定していきたいと思います。
▼接続先にて検証用ユーザから作成していきます
▼test-user作成 # useradd test-user # passwd test-user ▼鍵ペア作成 # su - test-user $ ssh-keygen $ chmod 700 .ssh $ mv .ssh/id_rsa.pub .ssh/authorized_keys $ chmod 600 .ssh/authorized_keys ▼中身控えておく $ cat .ssh/id_rsa
▼接続元の設定
今回”Host”の部分に接続するユーザ名を指定していますが、
この部分は好きに変えてしまって大丈夫です。
今回は新規に作成したユーザ名で接続ができるようしていますが、
実際には”Host”に設定した文字列でSSH接続ができます。
※Hostには好きな名前を指定することが可能です
接続先のサーバーが複数ある場合、それぞれにサーバのホスト名を指定するのも良いと思われます。
$ vi .ssh/config Host test-user Hostname "接続先のIPを記述" User test-user IdentityFile /home/test/.ssh/test-user/id_rsa
▼秘密鍵設置
$ mkdir -p /home/test/.ssh/test-user $ vi /home/test/.ssh/test-user/id_rsa [鍵ペア作成時に控えた内容を挿入] $ chmod 600 /home/test/.ssh/test-user/id_rsa
接続元への秘密鍵設置まで完了し、これで準備は整いました!
▼接続確認
今回は“test-user”を指定して接続できるように設定しています。
それでは $ ssh test-userで接続してみます。
[netassist@test ~]$ ssh test-user (略) , #_ ~\_ ####_ Amazon Linux 2023 ~~ \_#####\ ~~ \###| ~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023 ~~ V~' '-> ~~~ / ~~._. _/ _/ _/ _/m/' Last login: Fri Oct 20 15:07:54 2023 [test-user@tech-test ~]$
上記の通り“test-user”で接続できています!
セキュアなSSHについて
SSHに関するセキュリティ対策についても少し触れておきます。
▼SSHを利用する際にしておきたい対策
①SSHキーを使用する
パスワード認証ではなく公開鍵認証方式を使用
②IP制限リストを使用
アクセスを制限するためにIPアドレスベースの
制限リストを設定し特定のIPからの接続のみを許可します。
③ロックアウト設定
一定回数sshログインに失敗した場合アカウントをロック
ログイン不可にし、ブルートフォース攻撃から保護します
④rootでのログイン無効
高い権限をもつ”root”で、サーバに侵入されてしまうと
大変危険なため、rootユーザーでのログインを無効にする。
おわりに
今回は、SSH接続をユーザ名で接続できるように設定しました。
自分がよくログインするサーバへ対しては、ssh configの設定をしておき
毎回のログインをより簡単にしておくといいのではないでしょうか。
後半の方で少し触れた、SSH接続をする際のセキュリティ対策の詳細は
また別の機会にご紹介できればと思います。
以上です。ありがとうございました。