SSH(セキュアシェル)
セキュアシェル(SSH)は、リモートサーバーに安全にアクセスするためのプロトコルです。SSHは、暗号化を利用して通信を保護し、リモートのサーバーやデバイスにログインしたり、コマンドを実行したりするために広く使用されています。また、ファイル転送やポート転送といったさまざまな機能も提供します。
SSHの特徴
セキュアな通信
- SSHは通信内容を暗号化するため、パスワードや送受信されるデータが盗聴されるリスクを低減します
認証
- ユーザー認証には、パスワード認証や公開鍵認証が利用されます
- 公開鍵認証を使用することで、より強力なセキュリティを実現できます
多機能
- リモートシェルアクセス(ターミナル接続)
- セキュアなファイル転送(SCPやSFTP)
- トンネリング(ポート転送)
SSHの仕組み
クライアントとサーバー
- SSHはクライアントとサーバー間で動作します
- クライアント:リモートに接続するユーザーの端末
- サーバー:SSHサービスを提供するリモートデバイス
暗号化
- SSHは公開鍵暗号(RSA、ECDSAなど)を用いて認証を行い、その後に共通鍵暗号(AESなど)を使用してデータを暗号化します
認証
-
パスワード認証
- ユーザー名とパスワードで認証を行います
-
公開鍵認証
- クライアント側に秘密鍵を保存し、サーバー側に公開鍵を配置する方式。パスワードを使用せず、より安全
SSHの利用方法
SSH接続の基本コマンド
ssh username@remote_server
-
username
:リモートサーバーのユーザー名 -
remote_server
:リモートサーバーのIPアドレスやホスト名
公開鍵認証の設定
1. 秘密鍵と公開鍵の生成
ローカルマシンでSSH鍵ペアを作成します。
これにより、秘密鍵と公開鍵が生成されます。
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
2. 公開鍵をサーバーにコピー
公開鍵をサーバーに転送します。
ssh-copy-id username@remote_server
3. 公開鍵認証で接続
鍵ペアを使ってリモートサーバーにログインできます。
ssh username@remote_server
SSHの応用
-
ローカルポート転送
ローカルマシンのポートをリモートに転送
例: 踏み台サーバーから内部ネットワークにアクセスする際などに使用ssh -L 8080:localhost:80 username@remote_server
お知らせ
今回はGoサンプルコードはありません。