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章

← Linuxコマンド一覧へ戻る