sshコマンドとは?公開鍵認証の仕組みと安全なサーバー接続の実務
Linuxの遠隔操作に必須の「ssh」コマンドについて、公開鍵・秘密鍵を使った安全な接続方法(公開鍵認証)や実務でのポート指定などを解説します。
sshコマンドとは?
ssh(Secure SHell)は、ネットワークを経由して別のコンピューター(サーバー)に安全に遠隔ログインし、操作するためのコマンドおよびプロトコルです。
通信経路がすべて暗号化されているため、パスワードや送受信するデータが第三者に盗聴される危険性が極めて低くなっています。
以前の技術(Telnet)との違い
昔は telnet というコマンドが使われていましたが、これは通信が平文(暗号化されていない状態)で行われるため、ネットワーク上の誰かにパスワードを丸見えで盗まれるリスクがありました。現在、インターネット経由のサーバー操作にTelnetを使うことはセキュリティ上絶対にあり得ません。
どのような場面で使われるか
AWSのEC2インスタンスや、さくらのVPSなど、クラウド上のLinuxサーバーに自分のパソコン(MacのターミナルやWindowsのPowerShell)から接続して作業する際に必ず使用します。
実務での「公開鍵認証」の仕組み
より安全にSSH 접속を行うため、実務ではIDとパスワードの入力による認証(パスワード認証)は設定で無効化し、「公開鍵認証方式」を利用するのが一般的です。
- 鍵ペアの作成 (
ssh-keygen): 手元のパソコンで、自分だけが持つ「秘密鍵 (id_rsa)」と、サーバーに渡す「公開鍵 (id_rsa.pub)」のペアを作成します。 - 公開鍵の登録: サーバー側の
~/.ssh/authorized_keysファイルに公開鍵の文字列を貼り付けます。 - SSH接続:
ssh -i /path/to/private_key user@hostと打つと、手元の秘密鍵とサーバーの公開鍵が数学的に照合され、合致すればパスワードなしでログインできます。
実務でよく使うオプション
- ポート番号の指定 (
-p):ssh -p 10022 user@192.168.1.10セキュリティ対策として、デフォルトの「22番ポート」から別の番号に変更されているサーバーへ接続する際に使用します。 - 秘密鍵ファイルの指定 (
-i):ssh -i ~/.ssh/my_aws_key.pem ec2-user@aws-ip
実務上の注意点
秘密鍵(id_rsa や .pem ファイル)の管理は厳重に行う必要があります。「絶対に他人に渡さない」「GitHubの公開リポジトリに誤ってプッシュしない」ことを徹底してください。
よくあるエラーやトラブルシュート
- Permission denied (publickey): サーバー側に公開鍵が正しく登録されていないか、ログインしようとしているユーザー名(
ec2-userやubuntuなど)が間違っている場合に発生します。 - WARNING: UNPROTECTED PRIVATE KEY FILE!: 手元の秘密鍵ファイルの権限が緩すぎる(誰でも読める状態になっている)と、SSHクライアントが接続を拒否します。
chmod 600 id_rsaを実行して自分だけが読める状態にする必要があります。
まとめ
sshはインフラエンジニアの「玄関の鍵」です。単なる接続だけでなく、公開鍵暗号方式の仕組みやファイルのパーミッション(chmod)の知識が複合的に求められるため、最初の大きな学習の壁でもあります。
関連する用語 (linux)
全12件を見るgit stash コマンドの使い方(作業の一時避難)
コミットせずに今の作業を一時保存できる `git stash` コマンドの使い方(保存・復元・一覧・削除)を実務ベースで解説します。
Cannot connect to the Docker daemon の原因と解決策
Dockerコマンド実行時に「Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?」と表示されるエラーの直し方を解説します。
tailコマンドとは?リアルタイムなログ監視の実務テクニックを解説
ファイルの末尾を表示する「tail」コマンドについて、-fオプションを使ったリアルタイムなログ監視やエラー調査の基本を解説します。
pingコマンドとは?ネットワーク疎通確認の仕組みと実務での活用
ネットワークの基本コマンド「ping」について、サーバー間の通信が届いているかを確認する仕組みとトラブルシューティングの初動対応を解説。
chmodコマンドとは?Linuxの権限(パーミッション)変更を分かりやすく解説
Linuxの必須コマンド「chmod」について、777や644といった数字の意味から、実務でよく使う権限設定の定石まで徹底解説します。
git rebase と git merge の違い・使い分け
コミット履歴を綺麗に保つための `git rebase` の仕組みと、`merge` との決定的な違い、実務での使い分けについて図解します。