macOS または Windows 10/11 では、組み込みの OpenSSH コマンドラインツールを使用して Linux Elastic Compute Service (ECS) インスタンスに接続できます。または、Windows で Xshell クライアントを使用することもできます。どちらの方法も、パスワードまたはキーペアを使用した認証をサポートしています。
Alibaba Cloud インスタンスへの接続には、Workbench の使用を推奨します。このブラウザベースのツールは、パスワードなしのログインをサポートしており、OpenSSH や Xshell を使用するよりも便利です。
利用上の注意
インスタンスは Linux オペレーティングシステムを実行していること。
インスタンスに固定パブリック IP アドレスがあるか、Elastic IP Address (EIP) が関連付けられていること。
方法 1: OpenSSH クライアント (コマンドライン) を使用する
OpenSSH は、macOS および最新の Windows オペレーティングシステムに組み込まれている標準の Secure Shell (SSH) クライアントであり、コマンドラインから迅速に接続できます。
接続前の準備
インスタンスのパブリック IP アドレス: [ECS コンソール - インスタンス] で、対象のインスタンスを見つけて詳細ページを開きます。[設定情報] セクションで、[パブリック IP アドレス] を見つけます。
インスタンスのログイン資格情報: インスタンスのパスワードを設定するか、キーペアをバインドします。
セキュリティグループの設定: インスタンスのセキュリティグループにインバウンドルールを追加して、ローカル IP アドレスからポート 22 への SSH アクセスを許可します。
手順
Windows 10/11
パスワードで接続する
PowerShell を開きます。
Win+Rを押し、powershellと入力してEnterを押します。リモート接続を開始します。
ssh <instance_username>@<instance_public_IP_address>例:
ssh root@47.98.xxx.xxx(初回接続時) ホストのフィンガープリントを検証します。
新しい ECS インスタンスに初めて接続すると、次のようなメッセージが表示され、ホストキーのフィンガープリントを検証するように求められます。
これは SSH のセキュリティメカニズムです。セキュリティのため、インスタンスのホストキーのフィンガープリントを取得し、表示されたものと比較します。一致しない場合は、中間者攻撃を受けている可能性があります。安全なネットワークに切り替えて、再度接続を試みてください。
ホストキーのフィンガープリントが正しいことを確認した後、
yesと入力して Enter を押します。The authenticity of host '47.98.xxx.xxx (47.98.xxx.xxx)' can't be established. ED25519 key fingerprint is SHA256:AbCdEf123456... This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])?インスタンスにアクセスするためのパスワードを入力します。
パスワードを入力しても、画面に文字は表示されません。これは正常な動作です。入力が終わったら
Enterを押してください。認証されると、ウェルカムメッセージが表示され、コマンドプロンプトが
[<username>@<hostname> ~]$に変わります。これはログインが成功したことを示します。Welcome to Alibaba Cloud Elastic Compute Service ! [root@Connect-Instance-Example ~]#
キーペアで接続する
PowerShell を開きます。
Win+Rを押し、powershellと入力してEnterを押します。リモート接続を開始します。
ssh -i /path/to/private_key.pem <instance_username>@<instance_public_IP_address>例:
ssh -i /path/to/private_key.pem root@47.98.xxx.xxx。このコマンドでは、/path/to/private_key.pemは秘密鍵ファイルへのパスです。例:C:\Users\Administrator\Downloads\private_key.pem。(初回接続時) ホストのフィンガープリントを検証します。
新しい ECS インスタンスに初めて接続すると、次のようなメッセージが表示され、ホストキーのフィンガープリントを検証するように求められます。
これは SSH のセキュリティメカニズムです。セキュリティのため、インスタンスのホストキーのフィンガープリントを取得し、表示されたものと比較します。一致しない場合は、中間者攻撃を受けている可能性があります。安全なネットワークに切り替えて、再度接続を試みてください。
ホストキーのフィンガープリントが正しいことを確認した後、
yesと入力してEnterを押します。The authenticity of host '47.98.xxx.xxx (47.98.xxx.xxx)' can't be established. ED25519 key fingerprint is SHA256:AbCdEf123456... This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])?キーで認証してインスタンスにアクセスします。
キーが認証されると、ウェルカムメッセージが表示され、コマンドプロンプトが
[<username>@<hostname> ~]$に変わります。これはログインが成功したことを示します。Welcome to Alibaba Cloud Elastic Compute Service ! [root@Connect-Instance-Example ~]#
macOS
パスワードで接続する
ターミナルを開きます。
リモート接続を開始します。
ssh <instance_username>@<instance_public_IP_address>例:
ssh root@47.98.xxx.xxx(初回接続時) ホストのフィンガープリントを検証します。
新しい ECS インスタンスに初めて接続すると、次のようなメッセージが表示され、ホストキーのフィンガープリントを検証するように求められます。
これは SSH のセキュリティメカニズムです。セキュリティのため、インスタンスのホストキーのフィンガープリントを取得し、表示されたものと比較します。一致しない場合は、中間者攻撃を受けている可能性があります。安全なネットワークに切り替えて、再度接続を試みてください。
ホストキーのフィンガープリントが正しいことを確認した後、
yesと入力してEnterを押します。The authenticity of host '47.98.xxx.xxx (47.98.xxx.xxx)' can't be established. ED25519 key fingerprint is SHA256:AbCdEf123456... This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])?インスタンスにアクセスするためのパスワードを入力します。
パスワードを入力しても、画面に文字は表示されません。これは正常な動作です。入力が終わったら
Enterを押してください。認証後、システムのウェルカムメッセージが表示され、コマンドプロンプトが
[<username>@<hostname> ~]$に変わります。これはログインが成功したことを示します。Welcome to Alibaba Cloud Elastic Compute Service ! [root@Connect-Instance-Example ~]#
キーペアで接続する
ターミナルを開きます。
リモート接続を開始します。
# chmod 400: 秘密鍵ファイルの所有者に読み取り専用権限を設定します。これは SSH クライアントのセキュリティ要件です。 chmod 400 /path/to/private_key.pem ssh -i /path/to/private_key.pem <instance_username>@<instance_public_IP_address>例:
ssh -i /path/to/private_key.pem root@47.98.xxx.xxx。このコマンドでは、/path/to/private_key.pemは秘密鍵ファイルへのパスです。(初回接続時) ホストのフィンガープリントを検証します。
新しい ECS インスタンスに初めて接続すると、次のようなメッセージが表示され、ホストキーのフィンガープリントを検証するように求められます。
これは SSH のセキュリティメカニズムです。セキュリティのため、インスタンスのホストキーのフィンガープリントを取得し、表示されたものと比較します。一致しない場合は、中間者攻撃を受けている可能性があります。安全なネットワークに切り替えて、再度接続を試みてください。
ホストキーのフィンガープリントが正しいことを確認した後、
yesと入力してEnterを押します。The authenticity of host '47.98.xxx.xxx (47.98.xxx.xxx)' can't be established. ED25519 key fingerprint is SHA256:AbCdEf123456... This key is not known by any other names. Are you sure you want to continue connecting (yes/no/[fingerprint])?キーを認証してインスタンスにアクセスします。
キーが認証されると、ウェルカムメッセージが表示され、コマンドプロンプトが
[<username>@<hostname> ~]$に変わります。これはログインが成功したことを示します。Welcome to Alibaba Cloud Elastic Compute Service ! [root@Connect-Instance-Example ~]#
方法 2: Xshell クライアントの使用 (Windows のみ)
Xshell は、Linux サーバーを管理するために使用される Windows 用の SSH クライアントです。
接続する前に
Xshell のダウンロードとインストール: Xshell の公式サイトにアクセスして、最新のクライアントをダウンロードしてインストールします。
インスタンスのパブリック IP アドレス: ECS コンソール - インスタンスで、対象のインスタンスを見つけて、その詳細ページを開きます。[設定情報] セクションで、[パブリック IP アドレス] を見つけます。
インスタンスのログイン認証情報: インスタンスのパスワードを設定するか、キーペアをバインドする。
セキュリティグループの設定: ローカル IP アドレスからポート 22 での SSH アクセスを許可するように、インスタンスのセキュリティグループにインバウンドルールを設定する。
手順
Xshell を起動し、新しいセッションを作成します。
Xshell アプリケーションを開きます。
表示される [セッション] ウィンドウで、[新規] をクリックします。または、メニューバーから を選択します。
接続を設定します。
左側のナビゲーションウィンドウで、[接続] をクリックし、次のパラメーターを設定します。
名前: セッションのわかりやすい名前 (例: My-Web-Server) を入力します。
プロトコル: デフォルトの SSH のままにします。
ホスト: インスタンスのパブリック IP アドレスを入力します。
ポート番号: デフォルトの 22 のままにします。
ユーザー認証を設定します。
左側のナビゲーションウィンドウで、[認証] をクリックします。
パスワードで接続する
方式: Password を選択します。
ユーザー名: サーバーのログイン名 (root など) を入力します。
パスワード: 対応するログインパスワードを入力します。
キーペアで接続する
ユーザー名: サーバーのログイン名 (root など) を入力します。
方式: Public Key を選択し、次のようにユーザーキーを設定します。
[Settings...] をクリックします。
[Key File] オプションを選択します。[User Key] の横にある [...] をクリックし、[Import...] をクリックして、ローカル記憶域から
.pem秘密鍵ファイルを選択します。インポート後、キーを選択して [OK] をクリックします。
(オプション) キーファイルがパスワードで保護されている場合は、[Password] を入力します。
インスタンスに接続します。
[接続] をクリックします。
(初回接続) ホストキーを検証します。
新しい ECS インスタンスに初めて接続すると、Xshell にホストキーの指紋を含む [SSH セキュリティ警告] ウィンドウが表示されます。
これは SSH のセキュリティメカニズムです。セキュリティのため、インスタンスのホストキーの指紋を取得し、表示されているものと比較します。一致しない場合は、中間者攻撃を受けている可能性があります。セキュアなネットワークに切り替えて、再度接続を試みてください。
キーを検証した後、[Accept and Save] をクリックします。
インスタンスにアクセスします。
コマンドプロンプトが表示されたら、接続は成功です。
Welcome to Alibaba Cloud Elastic Compute Service ! [root@Connect-Instance-Example ~]#
本番環境での適用
本番環境でのリモート接続のセキュリティを強化するには、以下のベストプラクティスに従ってください。
ホストの指紋を検証して中間者攻撃を防ぐ
インスタンスに初めて接続するときは、インスタンスのホストキーの指紋を検証して、攻撃者のサーバーではなく、正しいインスタンスに接続していることを確認します。
パスワードベースのログインを無効にし、キーペア認証を強制する
キーペア認証はパスワード認証よりもはるかに安全であり、ブルートフォース攻撃のリスクを軽減します。
インスタンスにキーペアをバインドします。
インスタンスにログインし、
/etc/ssh/sshd_config構成ファイルを編集して、PasswordAuthenticationの値をnoに変更します。変更を有効にするには、SSH サービスを再起動します。
デフォルトの SSH ポートを変更する
デフォルトのポート 22 を非標準ポート (2222 など) に変更すると、自動スキャンへの露出が減少します。
新しいポートを許可: インスタンスのセキュリティグループにインバウンドルールを追加して、新しいポートでのトラフィックを許可します。
SSH サービスポートの変更: インスタンスにログインし、
/etc/ssh/sshd_config構成ファイルを編集して、#Port 22をPort 2222に変更します。変更を有効にするには、SSH サービスを再起動します。新しいポートを使用して接続: 接続時に、
-pフラグで新しいポートを指定する必要があります。例:ssh -p 2222 username@instance_ip。
信頼できる IP アドレスからのみアクセスを許可する
セキュリティグループルールを変更して、ローカル IP またはその他の信頼できる IP アドレスからのみ SSH アクセスを許可します。
よくある質問
ポート 22 のセキュリティグループルールを設定するにはどうすればよいですか?
インスタンスのセキュリティグループで、ルールを追加し、次の設定を行います。
アクション
プロトコル
ソース
宛先 (このインスタンス)
許可
カスタム TCP
ローカルクライアントのパブリック IP アドレス。
重要0.0.0.0/0を使用すると、どの IP アドレスでもポートにアクセスできるようになり、セキュリティリスクが生じます。注意して使用してください。SSH(22)
SSH ポートを変更した場合は、新しいポート番号を使用してください。
インスタンスのホストキーの指紋を検証するにはどうすればよいですか?
インスタンスに初めて接続すると、ホストキーの指紋を検証するように求められます。
コンソールでの操作
ECS コンソール - インスタンスに移動します。左上隅で、リージョンとリソースグループを選択します。
インスタンスを見つけて、 をクリックします。次に、
BEGIN SSH HOST KEY FINGERPRINTSを見つけます。ホストの指紋が表示されます。
SSH クライアントによって表示される指紋が出力の指紋と完全に一致するかどうかを確認します。一致しない場合は、中間者攻撃を受けている可能性があります。安全なネットワークに切り替えて、再度接続を試みてください。
このセクションが見つからない場合は、インスタンスにログインしてホストの指紋を表示します。
インスタンスでの操作
Workbench を使用してインスタンスにログインし、次のコマンドを実行してホストキーの指紋を表示します。
for f in /etc/ssh/ssh_host_*_key.pub; do ssh-keygen -l -f "$f"; done出力例:
1024 SHA256:9C******co root@Connect-Instance-Example (DSA) 256 SHA256:u6******SU root@Connect-Instance-Example (ECDSA) 256 SHA256:iQ******jg root@Connect-Instance-Example (ED25519) 3072 SHA256:8R******64 root@Connect-Instance-Example (RSA)SSH クライアントによって表示される指紋が出力の指紋と完全に一致するかどうかを確認します。一致しない場合は、中間者攻撃を受けている可能性があります。安全なネットワークに切り替えて、再度接続を試みてください。
SSH 設定ファイルで接続コマンドを簡略化するにはどうすればよいですか?
接続コマンドを簡略化するには、ローカルマシンで SSH
configファイルを作成して設定し、サーバーのエイリアスを設定します。設定ファイルを見つけるか、作成します。
Windows 10/11
設定ファイルのデフォルトパスは
C:\Users\YourUsername\.ssh\configです。ファイルが存在しない場合は、手動で作成してください。YourUsernameを現在の Windows ユーザー名に置き換えてください。macOS
設定ファイルのデフォルトパスは
~/.ssh/configです。ファイルが存在しない場合は、手動で作成してください。設定ファイルを編集し、インスタンス情報を追加します。
テキストエディターで
configファイルを開き、各サーバーにHostブロックを追加します。# Web サーバーのエイリアス "web-server" を設定 Host web-server HostName 47.98.xxx.xxx User root Port 22 # (オプション) キーペアを使用してログインする場合は、秘密鍵のパスを指定します。パスワードを使用する場合は、これを無視してください。 IdentityFile /path/to/your/private_key.pem # 他のサーバー用にさらに設定を追加できます Host other-server HostName 8.123.xxx.xxx User ecs-user Port 2222 IdentityFile ~/.ssh/another_key.pemパラメーターの説明:
Host: サーバーのカスタムエイリアス。
HostName: インスタンスのパブリック IP アドレス。
User: ログインユーザー名。
Port: SSH ポート番号 (デフォルトは 22)。
IdentityFile: 秘密鍵ファイルへの絶対パス。
エイリアスを使用して接続します。
configファイルを保存します。これで、エイリアスを使用して接続できます。# エイリアスを使用して直接接続します。SSH は設定ファイルから IP アドレス、ユーザー名、キー情報を自動的に読み取ります。 ssh web-server
Connection timed outエラーが表示されるのはなぜですか?このエラーは、クライアントがサーバーとの接続を確立できなかった場合に発生します。以下を確認してください。
パブリック IP アドレスが正しいこと。
セキュリティグループが必要なポートでのトラフィックを許可していること。
インスタンスが実行中であること。
ECS コンソール - 自己診断トラブルシューティング ツールを使用して問題を診断します。
Permission denied, please try againエラーが表示されるのはなぜですか?このエラーは、サーバーがパスワードを拒否したことを意味します。以下を確認してください。
コンソールでパスワードをリセットして、再試行します。
ECS コンソール - 自己診断トラブルシューティング ツールを使用して問題を診断します。
Permission denied (publickey)エラーが表示されるのはなぜですか?このエラーは、サーバーがキーを拒否したことを意味します。以下を確認してください。
コンソールでキーペアを再度バインドして、再試行します。
秘密鍵ファイルへのパスが正しいこと。秘密鍵がインスタンスに関連付けられているキーペアと一致すること。
(macOS の場合) 秘密鍵ファイルの権限が
400または600であること。ECS コンソール - 自己診断トラブルシューティング ツールを使用して問題を診断します。
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!エラーが表示されるのはなぜですか?この SSH セキュリティ機能は、最初の接続後にサーバーのホストキーの指紋が変更された場合にトリガーされます。これは、システムディスクを変更したり、オペレーティングシステムを再インストールしたり、インスタンス上のホストキーファイルを削除したりした場合に発生する可能性があります。
解決策: インスタンスのホストキーの指紋を検証します。それが正しい場合は、ローカルマシンで次のコマンドを実行して、古い指紋を削除します。
ssh-keygen -R <instance_public_IP_address>