SSH

初級 | 8分 で読める | 2026.04.24

公式ドキュメント

この記事の要点

ssh user@hostでリモートサーバーに接続、ssh-keygenで鍵ペア生成
~/.ssh/configでホスト別の設定を管理、エイリアスで接続を簡略化
-Lでローカルポートフォワーディング、-Dで SOCKS プロキシ

基本接続

コマンド説明
ssh user@hostリモート接続
ssh -p 2222 user@hostポート指定
ssh -i ~/.ssh/id_rsa user@host秘密鍵指定
ssh user@host "ls -la"コマンド実行後に切断
ssh -v user@host詳細ログ出力
ssh -X user@hostX11 フォワーディング

ポイント: -vオプションで接続トラブルの原因を確認できます。-vv-vvvさらに詳細なログが出ます。

鍵生成と登録

コマンド説明
ssh-keygen -t ed25519 -C "email@example.com"Ed25519 鍵ペア生成(推奨)
ssh-keygen -t rsa -b 4096RSA 4096bit 鍵ペア生成
ssh-copy-id user@host公開鍵をサーバーに登録
ssh-add ~/.ssh/id_ed25519ssh-agent に秘密鍵を追加
ssh-add -lssh-agent に登録済みの鍵一覧

鍵生成からサーバー登録までの流れ:

手順コマンド
1. 鍵生成ssh-keygen -t ed25519 -C "my-server"
2. 公開鍵登録ssh-copy-id -i ~/.ssh/id_ed25519.pub user@host
3. 接続確認ssh user@host # パスワードなしで接続

実践メモ: Ed25519は RSA より高速で安全です。GitHub や AWS などの主要サービスでサポートされているため、新規作成時は Ed25519 を推奨します。

SSH Config ファイル

~/.ssh/config に設定を書くと接続が簡単になります(OpenSSH 7.3+ で ProxyJump が利用可能、公式: https://man.openbsd.org/ssh_config)。

Host myserver
    HostName 192.168.1.100
    User deploy
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

Host *.example.com
    User admin
    ForwardAgent yes

Host bastion
    HostName bastion.example.com
    User jump
    IdentityFile ~/.ssh/bastion_key

Host internal
    HostName 10.0.1.50
    User app
    ProxyJump bastion
設定項目説明
Hostエイリアス名
HostName実際のホスト名または IP
Userログインユーザー名
PortSSH ポート
IdentityFile秘密鍵のパス
ForwardAgentssh-agent の鍵転送を有効化
ProxyJump踏み台サーバー経由で接続
# config 設定後は短縮できる
ssh myserver  # ssh -p 2222 -i ~/.ssh/id_ed25519 deploy@192.168.1.100

ポイント: ProxyJumpで踏み台サーバー経由の接続が1コマンドで完結します。内部ネットワークへのアクセスがシンプルになります。

ファイル転送(SCP)

コマンド説明
scp file.txt user@host:/path/ローカル→リモート
scp user@host:/path/file.txt .リモート→ローカル
scp -r dir user@host:/path/ディレクトリ転送
scp -P 2222 file.txt user@host:/path/ポート指定(-P は大文字)
scp -i ~/.ssh/id_rsa file.txt user@host:/path/秘密鍵指定
scp file1.txt file2.txt user@host:/tmp/複数ファイル転送
scp user1@host1:/path/file.txt user2@host2:/path/リモート間でコピー(ローカルを経由)

注意: scpはポート指定が-P(大文字)です。ssh の-p(小文字)と異なるので注意してください。

ファイル転送(SFTP)

コマンド説明
sftp user@hostSFTP 接続
get remote.txtリモート→ローカル
put local.txtローカル→リモート
lsリモートのファイル一覧
llsローカルのファイル一覧
cd /pathリモートのディレクトリ移動
lcd /pathローカルのディレクトリ移動

実践メモ: sftpは対話的にファイルを選んで転送できます。大量のファイルから一部だけを取得したいときに便利です。

ポートフォワーディング

種類コマンド例説明
ローカルポートフォワーディングssh -L 8080:localhost:80 user@hostローカル 8080 → リモート 80
ブラウザで http://localhost:8080 にアクセスすると、リモートの 80 番ポートに接続
リモートポートフォワーディングssh -R 8080:localhost:3000 user@hostリモート 8080 → ローカル 3000
リモートサーバーの localhost:8080 にアクセスすると、ローカルの 3000 番ポートに接続
SOCKS プロキシssh -D 1080 user@hostローカルに SOCKS プロキシを開始
ブラウザのプロキシ設定で localhost:1080 を指定すると、すべての通信がリモートサーバー経由になる

ポイント: -Dで SOCKS プロキシを立てると、リモートネットワークから Web ブラウジングできます。VPN の代替としても使えます。

セッション管理

コマンド説明
~.SSH セッションを強制切断(Enter の後に入力)
~^ZSSH セッションをバックグラウンドに移動
~?エスケープシーケンス一覧
ssh -o ServerAliveInterval=60 user@host60秒ごとにキープアライブ

実践メモ: ServerAliveIntervalを設定すると、無操作でもセッションが切れないようにできます。長時間の作業に便利です。

known_hosts 管理

コマンド説明
ssh-keygen -R hostknown_hosts から特定ホストを削除
ssh-keygen -Hknown_hosts をハッシュ化
ssh -o StrictHostKeyChecking=no user@hostホスト鍵チェックをスキップ(非推奨)

注意: StrictHostKeyChecking=noは中間者攻撃のリスクがあります。テスト環境以外では使わないでください。

トラブルシューティング

状況対処法
Permission denied (publickey)鍵のパーミッションを確認 chmod 600 ~/.ssh/id_rsa
Connection refusedサーバーの SSH ポートを確認 sudo systemctl status sshd
Host key verification failedssh-keygen -R host で known_hosts から削除
Too many authentication failuresssh -o IdentitiesOnly=yes -i ~/.ssh/key user@host

パーミッション修正:

ファイル/ディレクトリパーミッションコマンド
~/.ssh700chmod 700 ~/.ssh
~/.ssh/id_rsa600chmod 600 ~/.ssh/id_rsa
~/.ssh/id_rsa.pub644chmod 644 ~/.ssh/id_rsa.pub
~/.ssh/config600chmod 600 ~/.ssh/config
~/.ssh/known_hosts644chmod 644 ~/.ssh/known_hosts
~/.ssh/authorized_keys644chmod 644 ~/.ssh/authorized_keys

ポイント: SSH はパーミッションに厳しいため、~/.sshは 700、秘密鍵は 600 にします。これより緩いと接続を拒否されます。

セキュリティ設定(サーバー側)

/etc/ssh/sshd_config の推奨設定(OpenSSH 8.0+ 対応、公式: https://man.openbsd.org/sshd_config):

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Port 2222
AllowUsers deploy admin
設定項目説明
PermitRootLogin noroot ログイン禁止
PasswordAuthentication noパスワード認証無効化
PubkeyAuthentication yes公開鍵認証有効化
Port 2222デフォルトポート変更
AllowUsers許可ユーザーのホワイトリスト
# 設定変更後は再起動
sudo systemctl restart sshd

注意: PasswordAuthentication noにする前に、公開鍵認証での接続を確認してください。設定ミスでロックアウトされる可能性があります。

参考リソース

関連記事

この技術を体系的に学びたいですか?

未来学では東証プライム上場企業のITエンジニアが24時間サポート。月額24,800円から、退会金0円のオンラインIT塾です。

メールで無料相談する
← 一覧に戻る