
ssh コマンドの使い方
ここで紹介するコマンドの赤文字は、ご自身の設定に置き換えてください。
秘密鍵を持ってない場合は、こちらから作成してください
秘密鍵で認証してログイン -i
The authenticity of host '198.51.100.1 (198.51.100.1)' can't be established. ECDSA key fingerprint is SHA256:123456789abcdefgh. Are you sure you want to continue connecting (yes/no)?
yes と入力し、Enter を押すとログインできます。
秘密鍵を登録 ssh-add
ローカルホストに秘密鍵を登録すると、ssh コマンドのオプション -i を省略できます。
秘密鍵・公開鍵を生成 ssh-keygen
Generating public/private rsa key pair. Enter file in which to save the key (/Users/username/.ssh/id_rsa):鍵を保存するパス Enter passphrase (empty for no passphrase): パスワード Enter same passphrase again: パスワード 何も入力せずに Enter を押すとデフォルト値となります。(パスワードは無しとなります)
公開鍵の登録 ssh-copy-id
リモートホストに公開鍵を登録すると、ペアの秘密鍵を ssh の認証で使えるようになります。
※Permission denied が発生した場合
ちなみに、リモートホストに登録した公開鍵は ~/.ssh/authorized_keys に記録されます。
ポートフォワーディング
ポートフォワーディングには以下の3種類が存在します。
- ローカルポートフォワーディング
- リモートポートフォワーディング (ほぼ使わないので割愛)
- ダイナミックポートフォワーディング

[ターゲットホスト] は [リモートホスト自身] を指定可能です。

> Host: localhost:8080 Welcome to nginx! ※リモートホストのポート 80 で nginx がリッスンしている場合
ターゲット localhost:80 にリクエストをそのまま転送するので、Host ヘッダは localhost:8080
ターゲットホストとリモートホストが異なる場合

[ローカルポートフォワーディング] と [ダイナミックポートフォワーディング] はどちらもリモートホスト経由でターゲットに接続する機能ですが、違いは以下のとおりです。
ローカルポートフォワーディング | ダイナミックポートフォワーディング | |
---|---|---|
ターゲット | 特定のポート、ホスト | 全てのポート、ホスト |
リクエスト先 (Host ヘッダ) | ローカルホスト | ターゲットホスト |
198.51.100.1
ssh config (設定ファイル) の書き方
ここでは、設定ファイル (~/.ssh/config) の書き方を説明します。
ServerAliveInterval
ssh が sshd に定期的に応答確認を行うことで、勝手に ssh が切断されるのを防ぎます。
ServerAliveInterval 60
上記では 60 秒ごとに応答確認を行います。
User
ssh コマンドでデフォルトで利用するユーザーを設定します。
User ec2-user
HostName
ssh コマンドでデフォルトで利用するホスト名(IP アドレス)を指定できます。
HostName 192.0.2.1
Host
ssh コマンドで指定する設定のエイリアス名を設定できます。
Host test HostName 192.0.2.1 User ec2-user
これにより以下の2つは同じ意味を持ちます。
ProxyCommand -W オプション
踏み台サーバーを経由して別のサーバーにアクセス
Host private HostName 192.0.2.250 ProxyCommand ssh 192.0.2.1 -W %h:%p
192.0.2.1 を踏み台に、192.0.2.250 へアクセス。 %h はホスト名、%p はポートを表す。
Include
他の設定ファイルの内容を取り込みます。設定ファイルを分けたい場合に使います。
Include conf.d/*
上記は conf.d/* 配下の設定ファイルを全て取り込みます。
AddKeysToAgent, UseKeychain
Mac OS 専用。秘密鍵の指定やパスフレーズをキャッシュし、入力をスキップできます。
AddKeysToAgent yes UseKeychain yes