このトピックでは、config_ecs_instance_connectプラグインを使用してLinux Elastic Compute Service (ECS) インスタンスに公開鍵を登録し、パスワードではなくキーを使用してインスタンスに接続する方法について説明します。
使用上の注意
config_ecs_instance_connectは、Linuxインスタンスへの接続に使用されるAlibaba Cloudプラグインです。 このプラグインを使用すると、パスワードなしで安全で簡単な方法で特定のLinuxインスタンスに接続できます。
config_ecs_instance_connectプラグインと共通のCloud Assistantコマンドを使用して、特定のユーザーが使用する特定のインスタンスにSSH公開鍵を送信できます。 パブリックキーは60秒間有効です。 この60秒間、パスワードを入力せずにSSH公開鍵を使用して、ユーザーとしてインスタンスに接続できます。 このようにして、パスワード漏洩などのリスクが防止される。
この接続方法は、次のシナリオに適しています。
複数のインスタンスに頻繁に接続します。
機密データを含むインスタンスに接続します。
前提条件
接続するインスタンスのステータスは [実行中] です。
インスタンスが属するアカウントに対してSession Managerが有効になっています。 詳細については、「Session Managerを使用したインスタンスへの接続」をご参照ください。
インスタンスはLinuxオペレーティングシステムを実行し、Cloud Assistant Agentバージョン2.2.3.196以降がインストールされています。
Cloud Assistant Agentのバージョンの確認方法およびCloud Assistant Agentのアップグレード方法については、「Cloud Assistant Agentのインストール」および「Cloud Assistant Agentのアップグレードまたは無効化」をご参照ください。
Session Manager Clientにali-instance-cliがインストールされています。 詳細については、「LinuxおよびmacOSオペレーティングシステム」または「Windowsオペレーティングシステム」をご参照ください。
手順
Session Manager Clientで次のコマンドを実行して、Rivest-Shamir-Adleman (RSA) 公開鍵および鍵ファイルを生成します。
ssh-keygen -t rsa
プロンプトに従って
Enter
キーを押します。 次のコマンド出力は、公開鍵と鍵ファイルが生成されたことを示します。説明生成される公開キーのデフォルトパスは
~/.ssh/id_rsa.pub
です。config_ecs_instance_connectプラグインをインストールして起動します。
ECSコンソールでプラグインをインストールして起動する
インスタンスにconfig_ecs_instance_connectプラグインをインストールして起動するには、Cloud Assistantを使用してインスタンスで次のコマンドを実行します。
Cloud Assistantを使用してインスタンスでコマンドを実行する方法については、「即時実行機能の使用」をご参照ください。
acs-plugin-manager -e -P config_ecs_instance_connect --params --install
Alibaba Cloud CLIを使用してプラグインをインストールして起動する
説明この例では、インスタンスIDとしてi-bp15vhvt43ciprqkxxxxが使用されます。 実際の値に置き換えます。
aliyun ecs RunCommand --RegionId 'cn-hangzhou' \ --Type 'RunShellScript' \ --CommandContent 'acs-plugin-manager -e -P config_ecs_instance_connect --params --install' \ --InstanceId.1 'i-bp15vhvt43ciprqkxxxx'
公開鍵を接続先のインスタンスに送信します。
API操作を呼び出してインスタンスに公開鍵を送信する
InvokeCommand操作を呼び出して、
ACS-ECS-SendSshPublicKey-linux.sh
共通コマンドを実行し、SSH公開鍵をインスタンスに送信します。次のパラメータに注意してください。
CommandId: コマンドのID。 値を
ACS-ECS-SendSshPublicKey-linux.sh
に設定します。パラメータ:
username: インスタンスへの接続に使用するユーザー名。 デフォルト値:root。
sshpublickey: SSH公開鍵。 This parameter is required. ステップ1で生成したid_rsa.pubファイルの内容を設定します。
ECSコンソールでインスタンスに公開鍵を送信する
ECS コンソールにログインします。
左側のナビゲーションウィンドウで、
を選択します。[共通コマンド] タブをクリックします。
検索ボックスにACS-ECS-SendSshPublicKey-linux.shを入力し、Enterキーを押します。
ACS-ECS-SendSshPublicKey-linux.sh共通コマンドが表示されます。 [操作] 列で、[実行] をクリックします。
[コマンドの実行] パネルで、パラメーターを設定します。
次のパラメータに注意してください。
username: インスタンスへの接続に使用するユーザー名。 デフォルト値:root。
sshPublicKey: SSH公開キー。 This parameter is required. ステップ1で生成したid_rsa.pubファイルの内容を設定します。
[インスタンスの選択]: 接続するインスタンスを選択します。
[実行] をクリックします。
Alibaba Cloud CLIを使用してインスタンスに公開鍵を送信する
ACS-ECS-SendSshPublicKey-linux.sh
commonコマンドを実行して、パブリックキーをインスタンスに送信します。次のパラメータに注意してください。
CommandId: コマンドのID。 値を
ACS-ECS-SendSshPublicKey-linux.sh
に設定します。パラメータ:
username: インスタンスへの接続に使用するユーザー名。 デフォルト値:root。 値を使用するユーザー名に設定します。
sshpublickey: SSH公開鍵。 This parameter is required. ステップ1で生成したid_rsa.pubファイルの内容を設定します。
リクエストの例
aliyun ecs InvokeCommand -- RegionId 'cn-hangzhou' \ -- CommandId 'ACS-ECS-SendSshPublicKey-linux.sh '\ -- InstanceId.1 'i-bp15vhvt43ciprqkxxxx' \ -- パラメータ '{"username":"ecs-user","sshpublickey":"ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC5A0cE4tq7oq6q0NyEp/EuVNY9AGVVC1Kkp9MM2O0P + hXjghPVLk2j8rNue6IPwAcLPKwgwOMbcNKGu6U90Kt8XPE5fOyp1dakqXiG1hZFrNjfqkR7xpceV/N4tQvb5/8DCq98u8 5qouj/KGIvZ6 + BIQKBBh96iy/iHNLVNIS0H7UmBhYM4q9jjnxa + qy1JRCvV5Cc5mRgr87LfXbx + zmNiibFF23R9B9zeY1cS7RKRvzkpUWAN46f0gwY6Lg /RDcD7LbF0Kjz9oHp807pNinO94fvhWe5qZDH4VT **** test @ il7ckqcca ***}
パスワードを入力せずにインスタンスに接続します。
インスタンスのパブリックIPアドレスまたはIDを使用して、パスワードを入力せずにインスタンスに接続できます。
説明次のコマンドで、
~/.ssh/id_rsa
を秘密鍵の実際のパスに、usernameをインスタンスへの接続に使用するユーザー名に、instance_ipをインスタンスのパブリックIPアドレスに置き換えます。インスタンスのパブリックIPアドレスを使用して、パスワードを入力せずにインスタンスに接続します。
ssh -i ~/.ssh/id_rsa username@instance_ip
インスタンスのIDを使用して、パスワードを入力せずにインスタンスに接続します。
ssh -i ~/.ssh/id_rsa username@instance_id
よくある質問
パスワードフリーモードでインスタンスに接続しようとすると、パスワードの入力が求められるのはなぜですか。
パブリックキーがインスタンスに登録された後、キーはインスタンスで60秒間のみ有効になります。 公開鍵の有効期限が切れているかどうかを確認します。
Cloud Assistantを使用するか、共通コマンドを実行してconfig_ecs_instance_connectプラグインをインストールすると、エラーが報告されます。 問題の原因を特定するにはどうすればよいですか?
ログを表示して、問題の原因を特定できます。
次のパスでCloud Assistant Agentのログを表示します。
/usr/local/share/aliyun-assist/<Version number of Cloud Assistant>/log/aliyun_assist_main.log.*
次のパスでCloud Assistantプラグインのログを表示します。
/usr/local/share/aliyun-assist/<Version number of Cloud Assistant>/log/acs_plugin_manager.log