
サーバーを扱った経験がある方なら、おそらく何も考えずにターミナルでsshと入力したことがあるでしょう。しかし、真夜中の2時に締め出されたり、ファイル転送が何度も失敗したりすると、SSH(Secure Shell)とSCP(Secure Copy Protocol)の仕組みを知ることが非常に貴重になります。
SSHは、リモートコンピュータにログインしてコマンドを安全に実行できるようにするものです。SSHが登場する前は、Telnetのようなツールはパスワードを含むすべてを平文で送信していました。SSHはセッション全体を暗号化することでこの問題を解決しました。
デフォルトでは、SSHはポート22を介して接続します。これはシステムサービス用に予約された「ウェルノウンポート」です。執拗な攻撃者から身を隠すことはできませんが、SSHを非標準ポート(2222など)に移動することで、自動化されたブルートフォース攻撃を劇的に減らすことができます。
カスタムポートに接続するには:
ssh -p 2222 user@yourserver.com
パスワードは遅くて安全ではありません。Ed25519キーペアを生成しましょう(RSAよりも高速で安全です):
ssh-keygen -t ed25519 -C "your_email@example.com"
公開鍵をサーバーにコピーします。それ以降は、安全かつ瞬時にログインできます。
ssh-copy-id user@yourserver.com
IPアドレスやポートを覚えるのはやめましょう。SSH設定ファイル(~/.ssh/config)を作成して、サーバーの分かりやすいエイリアスを作成します。
Host myserver
HostName 192.168.1.100
User alice
Port 2222
IdentityFile ~/.ssh/id_ed25519
これで、接続は次のように入力するだけで簡単になります。
ssh myserver
SCPはSSHを内部で使用して、マシン間でファイルを転送します。構文は単純にscp source destinationです。
サーバーにコピー:
scp myfile.txt myserver:/home/alice/
サーバーからコピー(末尾の./に注意):
scp myserver:/home/alice/myfile.txt ./
SSHではカスタムポートに小文字の-pを使用しますが、SCPでは大文字の-Pを使用します。
scp -P 2222 myfile.txt user@server:/path/
SCPは迅速なファイル転送に優れていますが、常に最適なツールであるとは限りません。
rsync: ディレクトリ同期の究極のツールです。変更されたデルタブロックのみを転送するため、大規模なディレクトリでは劇的に高速になります。(例:rsync -avzP local/ myserver:/remote/)| 機能 | SCP | rsync | SFTP |
|---|---|---|---|
| ディレクトリの再開 | ❌ なし | ✅ あり (--partial) | ✅ あり |
| デルタ圧縮 | ❌ ファイル全体 | ✅ ブロックレベルの差分 | ❌ ファイル全体 |
| 対話型ナビゲーション | ❌ なし | ❌ なし | ✅ あり |
| 標準的な可用性 | ✅ どこでも | ⚠️ リモートにrsyncが必要 | ✅ どこでも |
SSHは、暗号化されたパイプを介して任意のTCPトラフィックをトンネルし、公開されていないプライベートデータベースへのアクセスや、ファイアウォールを安全にバイパスすることを可能にします。
-L)ローカルマシン上のポートを、公開されていないリモートの内部データベースに転送します。
# Connect local localhost:5432 to private RDS instance 10.0.1.25:5432 via bastion
ssh -L 5432:10.0.1.25:5432 user@bastion.example.com
-D)リモートサーバーを即座に暗号化されたブラウザプロキシに変えます。
# Start SOCKS5 proxy on local port 1080
ssh -D 1080 -N user@remoteserver.com
最新のクラウドVPCでは、本番データベースやワーカーノードはプライベートサブネットに配置され、パブリックIPv4アドレスを持っていません。手動で踏み台(bastion)にSSH接続し、そこからジャンプする代わりに、ネイティブのProxyJump(-J)を使用します。
# ~/.ssh/config configuration for transparent bastion hopping
Host bastion
HostName bastion.production.internal
User ec2-user
IdentityFile ~/.ssh/bastion_key.pem
Host internal-worker-01
HostName 10.0.2.144
User ubuntu
ProxyJump bastion
IdentityFile ~/.ssh/prod_nodes.pem
これで、ssh internal-worker-01と入力するだけで、踏み台を経由してシームレスに認証され、自動的にルーティングされるようになります!
SSHは、マルチテナントマシン上の悪意のあるユーザーが秘密鍵を読み取るのを防ぐため、厳格なファイルシステムパーミッションを強制します。
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 600 ~/.ssh/authorized_keys
インタラクティブツール: オクタルおよびシンボリックなLinuxファイルパーミッションを確認する必要がありますか?当社の無料のLinux Chmod Permissions Calculatorを使用して、正確なパーミッションとumask値を素早く計算してください。
サーバーの玄関をブルートフォースボットに開けっ放しにしないでください!/etc/ssh/sshd_configを編集して設定を強化しましょう。
PasswordAuthentication noを設定します。PermitRootLogin noを設定します。curve25519-sha256に制限します。ufw allow from <your_ip> to any port 22でSSHポートの公開を制限します。多数のファイルを含む大きなディレクトリをリモートサーバーに転送する必要があります。一部のファイルはすでにサーバー上に存在する可能性があり、変更された部分のみを転送することでネットワークトラフィックを最小限に抑えたいと考えています。このタスクに最も適したツールは何ですか?
ssh-keygen -R hostname_or_ipを使用して古いホストエントリを削除してください。SSHとSCPは、クラウドシステムとDevOpsインフラストラクチャの基盤となる配管です。Ed25519キーを採用し、~/.ssh/configプロファイルを構造化し、ProxyJumpとポートフォワーディングを習得し、sshd_configを強化することで、脆弱なリモートアクセスを暗号化された堅牢なワークフローに変えることができます。
AI CLIログの整形、Cron式の作成、JWTの解析、chmod権限の計算をオフラインで実行。

WireGuardサイト間カーネルメッシュにおける高スループット暗号ルーティングとMTU最適化を、本番環境レベルのアーキテクチャとコード例で解説する包括的なガイド。
続きを読む
SSHキーの強制、UFWファイアウォール、Fail2banによる侵入防止、自動アップグレード、auditdロギングなど、本番環境のUbuntuサーバーを強化するためのガイド。
続きを読む
IstioAmbientMeshとSidecarアーキテクチャの比較、メモリオーバーヘッド、Ztunnel、ゼロトラストセキュリティについて、実戦で検証された本番環境の事例を交えながら詳細に解説するアーキテクチャガイドです。
続きを読む