sshコマンドの使い方:リモートサーバーに安全にログイン・コマンド実行する
sshは、ネットワーク越しにリモートのサーバーへ安全にログインする、またはコマンドを実行するコマンドです。通信が暗号化されるため、サーバー管理の標準的な接続手段になっています。
sshのよく使う形
実務や学習で登場しやすい使い方を、そのまま入力できる形でまとめました。
| コマンド例 | 内容 |
|---|---|
ssh user@192.0.2.10 | 指定したユーザーでサーバーに接続 |
ssh -p 2222 user@host | ポート番号を指定して接続 |
ssh -i ~/.ssh/key.pem user@host | 秘密鍵ファイルを指定して接続 |
ssh user@host 'df -h' | ログインせずにコマンドを1つ実行して結果を受け取る |
ssh -L 8080:localhost:80 user@host | ローカルのポートを、サーバー側のポートへ転送(ポートフォワード) |
ssh-keygen -t ed25519 | 接続用の鍵ペアを作成 |
sshの主なオプション
| オプション | 意味 |
|---|---|
| user@ホスト でログイン | |
-i | 秘密鍵ファイルを指定 |
-p | ポート番号を指定 |
-L | ローカルポートフォワーディング |
-R | リモートポートフォワーディング |
-D | ダイナミックフォワーディング(SOCKSプロキシ) |
-N | リモートでコマンドを実行しない |
-f | 認証後にバックグラウンドへ移行 |
-A | エージェントフォワーディングを有効化 |
sshの実行例と結果の読み方
user@linux-study:~$ ssh -i ~/.ssh/id_ed25519 alice@203.0.113.10
Welcome to Ubuntu 22.04 LTS
alice@remote-server:~$
ssh -iで秘密鍵ファイルを明示的に指定し、alice@203.0.113.10というリモートサーバーにログインしています。ログインに成功すると、プロンプトがローカルからリモートサーバー側のもの(alice@remote-server)に切り替わります。
練習用ターミナルでは、sshをブラウザ上で安全に試せます。
sshを使うときの注意点
秘密鍵のファイルは、所有者以外が読める権限だと、ssh側に拒否されます。chmod 600 ~/.ssh/key.pemのように、所有者だけが読み書きできる権限にしましょう。秘密鍵は他人に渡さず、共有もしないのが原則です。
初回の接続では、サーバーのフィンガープリントを確認するメッセージが表示されます。正しいサーバーであることを確かめてから接続を続けます。接続先のサーバー側で鍵が変わった場合に警告が出るのは、中間者攻撃を検知するための仕組みです。
sshに関するよくある質問
接続できないときは何を確認しますか?
pingで到達性、ssh -vで詳細なログ、サーバー側のsshdの稼働とポート、セキュリティグループやファイアウォールの設定を順に確認します。
パスワードなしでログインするには?
公開鍵認証を使います。ssh-keygenで作った公開鍵を、サーバーの~/.ssh/authorized_keysに登録します。
関連ページ
あわせて覚えたいコマンド:scp・rsync・chmod・curl
sshが登場する章:上級 第25章