VPSで運用するのであればSSHは必須です。
そこで、SSHの基本的な使い方をWindowsやMac、Linuxユーザー向けに解説します。
SSHの認証方法
SSHでログインする際の認証方法は次の3つがよく利用されます。
- パスワード認証
- キーボードインタラクティブ認証
- 鍵認証
パスワード認証とキーボードインタラクティブ認証はクライアント側の視点では差が分からないため、どちらもパスワード認証と変わりません。
鍵認証は秘密鍵と公開鍵の組み合わせで認証します。秘密鍵はクライアント側に配置し、公開鍵をサーバー側に配置します。鍵にパスフレーズを設定しておくと鍵+パスフレーズの2要素認証でログインできるようになります。
コマンドラインでSSHログインする
LinuxやMac、Windows11以降であればコマンドラインでSSHログインできます。コマンドラインでSSHログインする場合はアプリをインストールする必要がありません。
パスワード認証・キーボードインタラクティブ認証
ssh ユーザー名@サーバー名
もしくは
ssh -l ユーザー名 サーバー名
鍵認証
鍵認証でログインする場合はSSHログインする側に秘密鍵を配置し、ログインされる側(サーバーなど)に公開鍵を配置します。
秘密鍵がデフォルト設定で作成されていて1つしかない場合はパスワード認証と同じようにログインできます。
ssh ユーザー名@サーバー名
もしくは
ssh -l ユーザー名 サーバー名
ログインに使う秘密鍵を指定したい場合は -i オプションでファイル名を指定します。
ssh -i 秘密鍵ファイル名 ユーザー名@サーバー名
もしくは
ssh -i 秘密鍵ファイル名 -l ユーザー名 サーバー名
鍵はssh-keygenコマンドで作成できます。何もオプションを付けなければデフォルトのまま作成されます。実行例はLinuxで実施していますがWindowsやMacでもコマンドは変わりません。
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ユーザー名/.ssh/id_rsa): ※① Enter passphrase (empty for no passphrase): ※② Enter same passphrase again: ※③ Your identification has been saved in /home/ユーザー名/.ssh/id_rsa Your public key has been saved in /home/ユーザー名/.ssh/id_rsa.pub The key fingerprint is: SHA256:c2kE/82xMCQYcijdEr6ZY5CWwh5ei5QqLB0XqII+C7I ユーザー名@サーバー名 The key's randomart image is: +---[RSA 3072]----+ | ...o++o. . | | ....=+ooo o | |..B B... o o . | |=* O o + . o = o | |*.= . * S + . + | |=o . . + | |o.o | |E. | | | +----[SHA256]-----+ $
①の箇所は鍵の保存先です。デフォルトから変更しないならばエンターキーを押下して進められます。
②と③の箇所はパスフレーズです。ここは同じパスフレーズを入力してください。パスフレーズを設定しない場合はエンターキーを押下して進められますが、おすすめしません。
鍵を確認するには ホームディレクトリ直下の .ssh ディレクトリを見ます。id_rsa が秘密鍵でid_rsa.pubが公開鍵です。
Mac・Linuxの場合:
$ ls ~/.ssh/ id_rsa id_rsa.pub $
Windowsの場合:
dir %HOMEPATH%.ssh
作成した公開鍵(id_rsa.pub)をサーバーに配置します。配置先のディレクトは以下となります。
~/.ssh/
このディレクトリに「authorized_keys」というファイル名で保存します。つまりファイルパスは以下の様になります。
~/.ssh/authorized_keys
すでに「authorized_keys」というファイルが存在する場合は、ファイルに末尾に公開鍵の内容を追記してください。
cat id_rsa.pub >> ~/.ssh/authorized_keys
authorized_keysは他人が読み書きできるとセキュリティ上よろしくありません(勝手にログインされる)。そのため所有者のみ読み書きできるようにパーミッションを600に設定する必要があります。
chmod 600 ~/.ssh/authorized_keys