⛳
「サーバー用意しといたので、SSHで接続してください。」の対処法
あるあるシチュエーション
インフラ担当: 「サーバー用意しといたので、SSHで接続してください。」
俺氏: 「はい。」
このような場面で困らないために、SSH接続の基本と手順を整理します。
前提知識
SSH接続とは?
SSH(Secure Shell)は、リモートサーバーに安全に接続し、コマンドの実行やファイル転送を行うためのプロトコルです。
公開鍵認証について
SSH接続は、基本的に「公開鍵暗号方式」で行われます。
環境
- 接続元: macOS
- 接続先: なんらかのリモートサーバー
SSH接続のパターン
SSH接続には、以下の2つのパターンがあります。
- 自分で秘密鍵・公開鍵を作成し、公開鍵を渡すパターン
- インフラ担当から秘密鍵を渡されるパターン
パターン②の場合は、後述の「接続手順」の3以降を実施してください。
秘密鍵・公開鍵を作成し、公開鍵を渡すパターン
1. SSH鍵ペアを作成
以下のコマンドを実行し、秘密鍵・公開鍵のペアを作成します。
ssh-keygen -t ed25519
出力例:
Generating public/private ed25519 key pair.
Enter file in which to save the key (/Users/username/.ssh/id_ed25519): /Users/username/.ssh/test_ed25519
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/username/.ssh/test_ed25519
Your public key has been saved in /Users/username/.ssh/test_ed25519.pub
ポイント
-
ed25519
を指定することで、よりセキュアな鍵を作成できます。 -
パスフレーズなしで作成すると、接続時にパスワードを入力する必要がなくなります。(必要な場合は
ssh-add
を使って省略可能)
作成されたファイル:
ls ~/.ssh
test_ed25519 # 秘密鍵
test_ed25519.pub # 公開鍵
2. 公開鍵をインフラ担当に渡す
作成した公開鍵(.pub
のファイル)をインフラ担当に渡し、サーバー側に設定してもらいます。
3. サーバー情報をもらう
インフラ担当から、以下の情報をもらいます。
- ホスト名(またはIPアドレス)
- アカウント名
- パスワード(ない場合もある)
- 接続ポート番号(デフォルトは22)
/etc/hosts
にホスト名を設定(任意)
4. IPアドレスだと覚えにくいので、分かりやすいホスト名を設定しておくと便利です。
sudo vim /etc/hosts
以下のように記述すると、test_server
という名前で接続できるようになります。
11.11.111.11 test_server
※ IPアドレスを直接使う場合は、この設定は不要です。
~/.ssh/config
にサーバー情報を設定
5. SSHの設定を簡単にするため、~/.ssh/config
に接続情報を記述します。
vim ~/.ssh/config
# ~/.ssh/config
Host test_server
User 【アカウント名】
Port 【ポート番号】 # デフォルトなら省略OK
IdentityFile ~/.ssh/test_ed25519
6. SSH接続
以下のコマンドで接続できます。
ssh test_server
接続できない場合は?
- 設定ミスがないか確認
- 接続元のIPが許可されているかインフラ担当に確認
秘密鍵を渡されるパターン
インフラ担当から秘密鍵を渡された場合、手順1・2を省略し、手順3から進めてください。
秘密鍵を ~/.ssh
に保存し、chmod 600
で適切な権限を設定することを忘れずに。
chmod 600 ~/.ssh/【渡された秘密鍵ファイル】
まとめ
Web系の開発では、アプリ開発者とインフラ担当が分かれていることが多く、SSH接続を当然のように求められることもあります。
この手順を押さえておけば、 「SSHで接続してください」→「はい」 の流れでスムーズに対応できるはず!
この記事が役に立てば嬉しいです。
Discussion