SSH(Secure Shell)はネットワーク越しに別のマシンへ安全に接続するためのプロトコルです。 パスワードや通信内容が暗号化されるため、リモートサーバーの操作に広く使われています。
基本的な接続
ssh コマンドの基本構文はシンプルです。
ssh ユーザー名@ホスト名
例えば example.com に taro というユーザーで接続するには:
ssh taro@example.com
ポートを指定する場合は -p オプションを使います(デフォルトは22番)。
ssh -p 2222 taro@example.com
鍵認証の設定
毎回パスワードを入力するのは手間がかかるうえ、セキュリティ上も鍵認証が推奨されます。
鍵ペアを生成する
ssh-keygen -t ed25519 -C "自分のメールアドレスなどコメント"
実行すると以下の2ファイルが ~/.ssh/ に作られます。
id_ed25519— 秘密鍵(絶対に外部に漏らさない)id_ed25519.pub— 公開鍵(サーバーに登録する)
公開鍵をサーバーに登録する
ssh-copy-id -i ~/.ssh/id_ed25519.pub taro@example.com
または手動でサーバー側の ~/.ssh/authorized_keys に公開鍵の内容を追記します。
# サーバー側で実行
mkdir -p ~/.ssh
chmod 700 ~/.ssh
echo "公開鍵の内容" >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
登録後の接続確認
ssh taro@example.com
パスワードなしで接続できれば成功です。
SSH設定ファイル(~/.ssh/config)
接続先ごとにオプションを毎回入力するのは面倒です。~/.ssh/config に設定を書いておくと短いエイリアスで接続できます。
Host myserver
HostName example.com
User taro
Port 2222
IdentityFile ~/.ssh/id_ed25519
設定後は以下のコマンドだけで接続できます。
ssh myserver
ファイルのパーミッションは 600 にしておく必要があります。
chmod 600 ~/.ssh/config
よく使うオプション
| オプション | 説明 |
|---|---|
-p ポート | 接続ポートを指定 |
-i 鍵ファイル | 秘密鍵ファイルを指定 |
-L ローカル:リモート | ローカルポートフォワーディング |
-N | リモートコマンドを実行しない(フォワーディング専用) |
-v | 詳細なデバッグ出力(接続トラブル時に便利) |
ファイルの転送(scp / rsync)
SSHを使ってファイルをコピーする方法も覚えておきましょう。
# ローカル → リモートにコピー
scp localfile.txt taro@example.com:/home/taro/
# リモート → ローカルにコピー
scp taro@example.com:/home/taro/remotefile.txt ./
# ディレクトリごとコピー(-r オプション)
scp -r mydir/ taro@example.com:/home/taro/
rsync を使うと差分だけを転送できるので効率的です。
rsync -avz mydir/ taro@example.com:/home/taro/mydir/
練習問題
以下の問いに答えてください。
問題1: example.com のポート 2222 に alice というユーザーで接続するコマンドを書いてください。
問題2: 鍵ペアを生成するコマンドのうち、アルゴリズムに ed25519 を指定するオプションはどれですか?
問題3: ~/.ssh/config に以下の設定を書いた場合、接続するコマンドはどう短縮できますか?
Host staging
HostName 192.168.1.100
User deploy
IdentityFile ~/.ssh/deploy_key
問題4: ローカルの report.pdf をリモートサーバー example.com(ユーザー bob)の /tmp/ に転送するコマンドを書いてください。
答え
問題1の答え:
ssh -p 2222 alice@example.com
問題2の答え:
-t ed25519 オプションです。
ssh-keygen -t ed25519
問題3の答え:
ssh staging
設定ファイルに Host staging のエイリアスがあるため、これだけで deploy@192.168.1.100 に deploy_key を使って接続できます。
問題4の答え:
scp report.pdf bob@example.com:/tmp/