ssh
コマンドは、ネットワーク越しにリモートマシンへ 暗号化された通信 で接続するためのコマンドです。
リモートサーバの管理やファイル転送、ポートフォワーディングなどに利用されます。
構文(Syntax)
ssh [オプション] [USER@]HOST [COMMAND]
主なオプション一覧
オプション | 説明 | 使用例 |
---|---|---|
-p PORT | 接続ポートを指定(デフォルト:22) | ssh -p 2222 user@host |
-i KEY | 秘密鍵ファイルを指定 | ssh -i ~/.ssh/id_rsa user@host |
-l USER | ユーザー名を指定(USER@HOST と同じ) | ssh -l alice host |
-v | 詳細なデバッグ出力 | ssh -v user@host |
-X | X11転送を有効化(GUIアプリ転送) | ssh -X user@host |
-L [LOCAL_PORT]:[REMOTE_HOST]:[REMOTE_PORT] | ローカルポートフォワーディング | ssh -L 8080:localhost:80 user@host |
-R [REMOTE_PORT]:[LOCAL_HOST]:[LOCAL_PORT] | リモートポートフォワーディング | ssh -R 2222:localhost:22 user@host |
-N | リモートコマンドを実行せずポートフォワーディングのみ実施 | ssh -N -L 8080:localhost:80 user@host |
-T | 疑似ターミナルを割り当てない | ssh -T git@github.com |
実行例
リモートサーバへ接続
ssh user@example.com
出力例(初回接続時):
The authenticity of host 'example.com (203.0.113.1)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxx.
Are you sure you want to continue connecting (yes/no)? yes
ポートを指定して接続
ssh -p 2222 user@example.com
秘密鍵を指定して接続
ssh -i ~/.ssh/id_rsa user@example.com
リモートでコマンドを1回だけ実行
ssh user@example.com "uptime"
出力例:
10:30:00 up 3 days, 5:21, 2 users, load average: 0.05, 0.02, 0.01
ローカルポートフォワーディング
ssh -L 8080:localhost:80 user@example.com
(ローカルの http://localhost:8080
からリモートの 80番ポート
にアクセス可能)
GitHub への接続テスト
ssh -T git@github.com
出力例:
Hi username! You've successfully authenticated, but GitHub does not provide shell access.
エラー例(認証失敗)
ssh user@wronghost
出力例:
ssh: connect to host wronghost port 22: Connection refused
関連コマンド
scp
: SSH を利用したファイル転送sftp
: SSH を利用したファイル転送(FTPライクな操作)rsync
: 差分転送可能なファイル同期ツール(SSH利用可能)ssh-keygen
: SSH 鍵ペアを生成ssh-copy-id
: 公開鍵をリモートサーバにコピー
備考
- デフォルトの接続ポートは 22。変更されている場合は
-p
オプション必須。 - パスワード認証よりも 公開鍵認証 を使うのが推奨されます。
~/.ssh/config
を利用すれば、ホストごとの接続設定を簡略化可能。ssh-agent
を使うと、秘密鍵のパスフレーズを毎回入力せずに済む。
参考
- manページ: man7.org ssh(1)
- OpenSSH: https://www.openssh.com/
コメント