25.

ssh リモート接続コマンドの使い方とオプション

編集

本稿は Linux の ssh コマンドに関する記事です。

SSH とは?

ssh はリモート PC を暗号化通信で操作するためのコマンドです。実装としては OpenSSH がデファクトで、Linux / Mac はもちろん、近年の Windows にも標準搭載されています。プロトコル本体の概要は SSH (プロトコル) を参照してください。

基本構文

ssh [オプション] ユーザ@ホスト [リモートで実行するコマンド]
ssh user@example.com
ssh -p 2222 user@example.com
ssh -i ~/.ssh/id_ed25519 user@example.com
ssh user@example.com 'uptime'    # ログインせずコマンド実行

主なオプション

オプション用途
-p ポート接続ポート (既定 22)
-i 鍵ファイル使用する秘密鍵を指定
-l ユーザユーザ名指定 (ssh -l user host)
-v / -vv / -vvv詳細ログ。接続トラブル解析に有用
-Nシェル起動せず転送のみ
-fバックグラウンドへ送る
-L 局所:host:ポートローカルポート転送
-R 遠隔:host:ポートリモートポート転送
-D ポートSOCKS プロキシ (動的転送)
-J 踏み台多段ログイン (ProxyJump)
-X / -YX11 転送 (-Y は信頼)
-C通信を圧縮
-Gconfig の解釈結果を確認
-o 名=値config 値を 1 回限り上書き
-t強制的に擬似端末を確保 (sudo 用)

~/.ssh/config による接続情報のエイリアス

Host prod
  HostName 203.0.113.10
  User deploy
  Port 22
  IdentityFile ~/.ssh/id_ed25519

Host bastion-target
  HostName 10.0.0.5
  User ops
  ProxyJump bastion

これだけで ssh prodssh bastion-target と短く書けるようになります。パーミッションは ~/.ssh = 700、config / 秘密鍵 = 600。

公開鍵認証のセットアップ

  1. 鍵ペアを生成: ssh-keygen -t ed25519 (推奨。古い rsa より速く強い)
  2. 秘密鍵にパスフレーズを設定 (空にしない)
  3. 公開鍵をサーバへ転送: ssh-copy-id user@host または ~/.ssh/authorized_keys に追記
  4. サーバ側で PasswordAuthentication no に変更し、sudo systemctl reload sshd
  5. 必要に応じて ssh-agent + ssh-add でパスフレーズをキャッシュ

主な用途別の例

# 単純ログイン
ssh user@host

# 単発でコマンド実行
ssh user@host 'df -h'

# ローカル 8080 → リモート 80 にトンネル
ssh -L 8080:localhost:80 -N -f user@host

# 踏み台経由
ssh -J bastion target

# SOCKS プロキシ
ssh -D 1080 -N -f user@host

関連コマンド

コマンド用途
scpSSH 経由のファイルコピー
rsync -e ssh差分同期
sftp対話型のファイル転送
ssh-keygen鍵生成・指紋確認・形式変換
ssh-copy-id公開鍵をサーバ authorized_keys に追記
ssh-agent / ssh-add秘密鍵のメモリキャッシュ
autossh切断時に自動再接続

よくあるエラーと対処

エラー原因
Permission denied (publickey)公開鍵が authorized_keys に無い / パーミッション不正
Connection refusedsshd 停止 / ポート違い / FW 閉鎖
Connection timed out到達不可。NW・SG・経路を確認
Host key verification failedサーバ鍵が変わった。~/.ssh/known_hosts から該当行削除
Too many authentication failures-o IdentitiesOnly=yes で使う鍵を限定

セキュリティ上の注意

  • パスワード認証は無効化し、公開鍵認証 + パスフレーズが基本
  • root の直接ログインを禁止 (PermitRootLogin no)
  • ポート 22は常にスキャン対象。fail2ban・WAF・送信元 IP 制限を検討
  • 古い鍵タイプ (RSA1024 / DSA) は廃止。ed25519 または RSA 4096
  • 秘密鍵は絶対に共有・公開しない。Git 管理外、漏洩時はサーバ側で即時失効

関連

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. ls ファイル/ディレクトリ一覧表示
  2. sudo ユーザー指定
  3. cron/crontab ジョブの自動実行と登録方法
  4. wget http通信によるファイルダウンロード
  5. rm ファイル/ディレクトリ削除
  6. pwd カレントディレクトリの表示
  7. cd ディレクトリの移動
  8. ./configure
  9. make
  10. make install
  11. unzip ファイルの解凍
  12. mv ファイル/ディレクトリの移動および名称変更
  13. mkdir ディレクトリの作成
  14. touch 空ファイルの新規作成
  15. vi テキストディタの使用
  16. find ファイル/ディレクトリ検索
  17. grep 文字列の検索
  18. tail ファイルの末尾表示
  19. curl HTTP通信によるリクエスト
  20. nslookup ドメインのIP解決
  21. apt update パッケージリストの情報を更新
  22. apt upgrade パッケージの更新
  23. ln リンク/ショートカットの作成と削除
  24. rsync ファイル/ディレクトリの同期
  25. ssh リモートとの暗号化通信
  26. scp sshを利用したファイルのコピー
  27. unzip zip ファイルを解凍する
  28. cp ファイル/ディレクトリのコピー
  29. diffファイルの差分抽出
  30. fdisk ハードディスクに対する操作
  31. lsblk デバイスをツリー状で表示する
  32. kill プロセスを終了させる
  33. zip ファイルやディレクトリをzip形式に圧縮する
  34. host ドメインからIPアドレスを確認
  35. chmod 権限の変更
  36. ip IPアドレスの確認
  37. chown ファイル/ディレクトリ所有者の変更
  38. chgrp ファイル/ディレクトリのグループ情報の変更
  39. nohupと'&' プログラムのバックグラウンド実行(ssh接続時)
  40. lsof 開いているポート番号の確認
  41. tar ファイルの圧縮と解凍
  42. file ファイルの種類を表示
  43. cat ファイルの中身を表示
  44. head ファイルの先頭部分を表示
  45. wc 行数/単語数/文字数を確認
  46. shutdown システムのシャットダウンと再起動
  47. ps プロセスの確認
  48. which コマンドの絶対パスを調べる
  49. yum RedHat系ディストリビューションの管理
  50. mount ファイルシステムのマウント
  51. 特定フォルダ以下の特定拡張子のファイルを再帰的に削除する方法
  52. 特定のフォルダとそのサブフォルダ内にある特定のファイル名のファイルを再帰的に削除