2-1. Linuxユーザー追加とカギ設定🔑
2-2. Linuxサーバーのホスト名変更
2-3. 新しいLinuxユーザーでログイン
2-4. ドメイン取得とDNS
2-5. VScodeを使ってSSH接続
この章では、Linuxホストを安全に使うための準備をします。
Linuxに新しいユーザーを追加し、SSH鍵を使って安全にアクセスできるよう設定、そしてドメインとDNSの設定を確認します。
前提: WEB/APPサーバーとDBサーバーに、2台のLinuxホストを用意します。それぞれに、Linuxユーザー登録とドメイン&DNS設定をします。
root相当のユーザーでLinuxサーバーにログインしておくこと
1.サーバーのIPアドレス:___
2.サーバーのユーザー名:___
3.サーバーのSSH秘密鍵:___
4.(必要な場合)パスワード:___
※ カゴヤVPSの場合、ブラウザのサーバーコンソールでログインする(rootユーザー、サーバー注文時のパスワード)
2-1. Linuxユーザー追加とカギ設定🔑
Linuxユーザーを追加
root相当のユーザでOSログインして下記ステップで開発用の新しいユーザーを追加します。
前提:Windowsのターミナル(cmd.exe)またはクラウド管理ポータルで、Linux OSにログインしていること
- $ sudo adduser ユーザ名 # 新しいユーザを追加
- $ sudo passwd ユーザ名 # パスワード設定
- $ sudo usermod -aG sudo ユーザ名 # ユーザをsudoグループに追加
- $ id ユーザ名 # sudo権限あるか検査(もしくは $ groups ユーザ名)
- $ sudo -l -U ユーザ名 # ユーザーが使えるコマンドを検査
- ※ カゴヤVPSの場合、ここまで進むとPCからSSH接続できる[> ssh -i .ssh/鍵ファイル名 ユーザ名@IPアドレス]
Linuxユーザーを切り替え
Linuxを作成できるユーザーと、追加されたユーザーを切り替えて、新しいユーザーでSSH鍵を作成します
$ su - ユーザ名
(例:$ su - newuser) - を付けるとユーザー切り替えと、新しいユーザーの環境変数とディレクトリに移動します
(例:$ su newuser)-なしの場合はユーザー切り替えのみ
SSH鍵を作成・登録
Linuxに設置する公開鍵🔒と、PCクライアント側で保管する秘密鍵🔑の2つをつくりそれぞれにアクセス権を設定します。
- SSH鍵の作成
$ ssh-keygen -t rsa -b 4096 -C "鍵のコメントなど自由記述"
- パスワードなし/保存先変更せず
- 公開鍵の保存先(例:/home/ユーザ/.ssh/id_rsa.pub)
- 秘密鍵の保存先(例:/home/ユーザ/.ssh/id_rsa)
- 公開鍵🔒をサーバーに登録[ファイル名を変更 id_rsa.pub → authorized_keys]
- ファイルの中身は「ssh-rsa xxx中略xxxx== your_comment」
$ cp id_rsa.pub authorized_keys
- 秘密鍵🔑を自分のPCにコピー(例: C:\Users\ユーザ名.ssh\id_rsa)
- ファイルの中身は「—BEGIN OPENSSH PRIVATE KEY—xxxxxxx—END xxx—」形式になっているが、Windowsで使うにはpem形式にする必要がある。
- Windows用Pemファイルに書き換える
$ ssh-keygen -p -m PEM -f ~/.ssh/id_rsa
- 書き換えたPemファイルは、Windowsのユーザーディレクトリに保管する
メモ帳などで「C:\Users\ユーザ名.ssh\id_rsa」 を作成して、pemファイルの中身をコピーする - ファイルの中身は「—–BEGIN RSA PRIVATE KEY—–xxxx—END xx —-」になっているはず。
- (必要な場合)authorized_keysファイルの権限を設定する
- ファイル[rw-(読み書き可)]権 $ chmod 600 ~/.ssh/authorized_keys
- ディレクトリ[rwx(実行=cdアクセス可)]権 $ chmod 700 ~/.ssh
- 所有者変更 $ sudo chown kano:kano authorized_keys
- SSH設定の変更 $ sudo nano /etc/ssh/sshd_config
- sshd_configに、以下の設定パラメータを追加(鍵認証を有効, パスワード認証を無効, rootのログイン禁止):
※rootのログイン禁止は、新しいユーザーでSSH接続できることを確認した後で設定した方がよいです- PubkeyAuthentication yes
- PasswordAuthentication no
- PermitRootLogin no
- nanoエディタで、[ctrl]+[s]でsshd_configファイルを保存し、[ctrl]+[x]でnanoエディタを終了する
- SSHプロセスを再起動
- このとき設定の記述を失敗すると永久にSSH接続できなくなる場合があるので、OSログイン済みのターミナルを複数起動しておいた方が安心
つまり rootユーザーのターミナル と 新しいユーザーのターミナル。新しいユーザーで再ログインをテストして失敗しても、rootユーザーで再設定ができる。 - $ sudo systemctl restart ssh
- このとき設定の記述を失敗すると永久にSSH接続できなくなる場合があるので、OSログイン済みのターミナルを複数起動しておいた方が安心
- パスワード認証を無効化する(検査)
- もしも ssh設定ファイル[/etc/ssh/sshd_config]の最初の行に[Include /etc/ssh/sshd_config.d/*.conf]が記載されているならば、[/etc/ssh/sshd_config.d/50-cloud-init.conf]ファイルが存在する場合がある。この追加設定ファイルの中身が[PasswordAuthentication yes]なのでパスワード認証が有効になっている。
- この場合は、優先度の高いファイル名で設定を上書きする
$ sudo nano /etc/ssh/sshd_config.d/00-disable-password.conf
PasswordAuthentication no - ログイン検査
$ ssh ユーザ名@IPアドレス
下記が表示されたらパスワード認証が無効化されている
ユーザ名@IPアドレス: Permission denied (publickey).
- SSHコマンドのログを調べるには
- c:\> ssh -v -i .ssh/鍵 ユーザ名@IPアドレス
2-2. Linuxサーバーのホスト名変更
ラズパイのホスト名変更を参照して、好きなホスト名に変更します
2-3. 新しいLinuxユーザーでログイン
Windowsのターミナルを起動し、下記コマンドでLinuxにログインできることを確認します。
前提:秘密鍵の保存場所(C:\Users\ユーザ名\.ssh\id_rsa)の場合
- LinuxにSSH接続 C:\Users\ユーザ名 > ssh -i .ssh/id_rsa Linuxユーザ名@サーバーのIPアドレス
はじめてLinuxにアクセスするときに下記メッセージが表示されます。[yes]とキー入力して[Enter]します。
Are you sure you want to continue connecting (yes/no/[fingerprint])?
2-4. ドメイン取得とDNS
サーバーにアクセスするとき、IPアドレスでは覚えにくいのでIPアドレスの代わりにドメイン名を使います。
IPアドレスは[192.168.0.1]のような数字の並び、ドメイン名は[funnygeekjp.com]のような名前です。
DNSは、取得したドメイン名をIPアドレスに変換する仕組みです。
ドメインの取得
お名前ドットコム または AWS Route53 でドメイン名を取得します。ドメイン名は、年間契約料金がかかります。
ひとつのドメインに、複数のサブドメインを追加することができます。
設定すべき項目のみ記載し、ドメイン取得方法は記載しません。ドメインを契約するサイトで確認してください。
- ドメイン名を決めること: xxxxxx.xxx
- サブドメインの所有者を決める
- aaa.xxxx.xx(サイト1)
- bbb.xxxx.xx(サイト2)
- ccc.xxxx.xx(サイト3)
DNSレコードの登録
ドメインおよびサブドメインはDNSサーバーに登録することで、WEBにアクセスするPCが、URLをIPアドレスに変換できるようになります。
- DNSレコードを登録する
- aaa.xxx.xx A TTL=3600 x.x.x.x1
- bbb.xxx.xx A TTL=3600 y.y.y.y1
- ccc.xxx.xx A TTL=3600 z.z.z.z1
2-5. VScodeを使ってSSH接続
Windowsライクにコピペなど慣れているインターフェースでコーディングしたいならば、VScodeでLinuxにSSH接続します。
前提:VSCodeをインストールしてあること(ダウンロード)
WindowsのSSH構成ファイルに下記を記述する。下記はSSH鍵の場合と、パスワードのみの場合の例です。

Host (好きな名前)
HostName (IPアドレス)
IdentityFile .ssh/(秘密鍵pemのファイル名)
User (ユーザー名)
VScode左下の接続アイコン[><]を押す。接続するホストを選んで、Linuxのフォルダを開けたら成功。


[AWS EC2 Ubuntu 24.04]
VSCode で aws ec2にssh接続しようとするとき、「scpを使用してvscode serverをホストにコピーしています」のまま進まない場合、EC2インスタンスのDNS設定が正しく機能しておらず、VSCode Serverのダウンロード先(Microsoft CDNなど)を名前解決できなかったことが原因の可能性があります。
試しに[$ sudo apt update]を試して正常に終了するか、下記エラーメッセージが表示されるか検査します。
Err:2 http://archive.ubuntu.com/ubuntu noble InRelease
Temporary failure resolving ‘archive.ubuntu.com’
対策:Google DNSとCloudflare DNSを設定してみて、apt updateを再検査してみます。
$ sudo nano /etc/systemd/resolved.conf
------------ 下記を追加します
[Resolve]
DNS=8.8.8.8
FallbackDNS=1.1.1.1
------------ 再起動してみます
$ sudo systemctl restart systemd-resolved
$ sudo apt update とついでに $ sudo apt upgrade を実行して最新のパッケージにしておきます。
今度は、VSCode で先ほどよりも早くSSH接続できるはずです。