このトピックでは、ali-instance-cliのsend_public_keyサブコマンドを実行して公開鍵を登録し、パスワードではなくキーを使用してElastic Compute Service (ECS) インスタンスに接続する方法について説明します。
前提条件
接続するECSインスタンスはLinuxオペレーティングシステムを実行し、Cloud Assistant Agentバージョン2.2.3.256以降がインストールされています。 詳細については、「Cloud Assistant Agentのインストール」および「Cloud Assistant Agentのアップグレードまたは無効化」をご参照ください。
インスタンスが属するアカウントに対してSession Managerが有効になっています。 詳細については、「Session Managerを使用したインスタンスへの接続」をご参照ください。
背景情報
ali-instance-cliのsend_public_keyサブコマンドを実行して、指定されたユーザーが使用するSSH公開鍵をインスタンスに送信できます。 SSH公開キーは60秒間有効です。 この60秒間に、SSH公開鍵を使用して、パスワードなしで指定されたユーザーとしてインスタンスに接続できます。
Session Manager Clientは、Linux、macOS、およびWindowsオペレーティングシステムをサポートしており、これらのオペレーティングシステムでは使用方法が異なります。 詳細については、このトピックの次のセクションを参照してください。
LinuxまたはmacOSオペレーティングシステム
この例では、テストユーザーが使用されます。 実行する必要がある操作は、実際のユーザーとディレクトリによって異なる場合があります。
Session Managerクライアントにログインします。
Session Manager Clientにali-instance-cliをインストールします。
次のいずれかのコマンドを実行して、オペレーティングシステムに基づいてali-instance-cliをインストールします。
Linuxオペレーティングシステムの場合は、次のコマンドを実行します。
curl -O https://aliyun-client-assist.oss-accelerate.aliyuncs.com/session-manager/linux/ali-instance-cli chmod a + x ali-instance-cli
macOSオペレーティングシステムの場合は、次のコマンドを実行します。
curl -O https://aliyun-client-assist.oss-accelerate.aliyuncs.com/session-manager/mac/ali-instance-cli chmod a + x ali-instance-cli
(オプション)
config
という名前のファイルを作成し、ファイルに設定を追加します。インスタンスのIDを使用してインスタンスに接続する場合は、この手順を実行します。
を作成します。ssh
現在の作業ディレクトリ内のディレクトリ。 この例では、/home/testを作業ディレクトリとして使用します。mkdir。ssh
に切り替えます。ssh
ディレクトリ。cd. ssh
config
ファイルを作成して開きます。vim設定
I
キーを押して挿入モードに入ります。config
ファイルにコンテンツを追加します。説明次のコマンドのali-instance-cliを、ali-instance-cliファイルの絶対パスに置き換えます。 この例では、
/home/test/ali-instance-cli
が使用されています。ホストi-* ProxyCommand sh -c "ali-instance-cli ssh -i '% h' -- port' % p'"
Esc
キーを押して挿入モードを終了します。:wq
と入力し、Enter
キーを押してファイルを保存して終了します。config
ファイルに対する実行権限を付与します。chmod 755設定
AccessKeyペアまたはSecurity Token Service (STS) トークンを設定します。
AccessKeyペアまたはSTSトークンの取得方法については、「AccessKeyペアの作成」または「STSとは」をご参照ください。
testディレクトリに切り替えます。
cd /ホーム /テスト
認証方法を設定します。
次の認証方法がサポートされています。
AccessKeyペアベースの認証
次のコマンドを実行し、プロンプトに従ってAccessKey ID、AccessKey secret、およびリージョンIDを入力します。
. /ali-instance-cli configure -- mode AK
STSトークンベースの認証
説明次のコマンドで、region、ak、sk、およびtokenを実際のリージョンID、AccessKey ID、AccessKey secret、およびSTSトークンに置き換えます。
. /ali-instance-cli configure set -- mode StsToken -- region "region" -- access-key-id "ak" -- access-key-secret "sk" -- sts-token "token"
次のようなコマンド出力は、認証方法が設定されていることを示します。
Session Manager Clientで次のコマンドを実行して、RSA公開鍵および鍵ファイルを生成します。
ssh-keygen -t rsa
プロンプトに従ってEnterキーを押します。 次のようなコマンド出力は、公開鍵と鍵ファイルが生成されたことを示します。
説明生成される公開鍵のデフォルトパスは ~/.ssh/id_rsa.pubです。
Session Manager Clientで次のコマンドを実行して、接続先のインスタンスに公開鍵を送信します。
. /ali-instance-cli send_public_key -- instance <instance-id> -- public-key "<オンプレミス公開鍵ファイルまたはオンプレミス公開鍵ファイルのパス>" -- user-name testuser
説明-- user-nameパラメーターは、指定された公開キーのユーザー名を指定します。 この例では、-- user-nameはtestuserに設定されています。 ユーザー名を指定しない場合、パラメーターはデフォルトでrootに設定されます。 ユーザー名を指定する場合は、指定したユーザー名がインスタンスに存在することを確認してください。
次のSSHコマンドのいずれかを実行して、パスワードの代わりに公開鍵を使用してインスタンスに接続します。
インスタンスのパブリックIPアドレスまたはIDを使用して、パスワードの代わりにパブリックキーを使用してインスタンスに接続できます。
インスタンスのパブリックIPアドレスを使用して、インスタンスに接続します。
ssh -i ~/.ssh/id_rsa testuser @ instance_ip
説明~/.ssh/id_rsaを実際のキーファイルパスに、instance_ipを接続先のインスタンスのIPアドレスに、testuserを接続に使用するユーザー名に置き換えます。
インスタンスのIDを使用して、インスタンスに接続します。
ssh -i ~/.ssh/id_rsa testuser @ instance_id
説明~/.ssh/id_rsaを実際のキーファイルパスに、instance_idを接続先のインスタンスのidに、testuserを接続に使用するユーザー名に置き換えます。
次のコマンド出力は、Session Managerを使用してSSH経由でインスタンスに接続していることを示しています。
Windows オペレーティングシステム
WindowsコンピューターでSession Manager Clientを使用してインスタンスに接続する前に、コンピューターにOpenSSHがインストールされていることを確認してください。 WindowsオペレーティングシステムにOpenSSHをインストールする方法については、 Cloud Assistant Agentを使用して、Windows ECSインスタンスにOpenSSHをインストールします。
この例では、テストユーザーが使用されます。 実行する必要がある操作は、実際のユーザーとディレクトリによって異なる場合があります。
Session Managerクライアントにログインします。
Session Manager Clientにali-instance-cliをダウンロードしてインストールします。
次のいずれかのコマンドを実行して、オペレーティングシステムに基づいてali-instance-cliをインストールします。
OpenSSHクライアントを使用して、ali-instance-cliをダウンロードします。
Invoke-WebRequest -Uri "https://aliyun-client-assist.oss-cn-beijing.aliyuncs.com/session-manager/windows/ali-instance-cli.exe" -OutFile <destination>
説明<destination> を、ali-instance-cliのダウンロード先のパスに置き換えます。
ブラウザを使用してali-instance-cliをダウンロードします。
ali-instance-cli.exe for Windowsをダウンロードして、コンピュータのディレクトリに保存します。 この例では、
C:\Users\test
ディレクトリが使用されています。
(オプション)
config
という名前のファイルを作成し、ファイルに設定を追加します。インスタンスのIDを使用してインスタンスに接続する場合は、この手順を実行します。
C:\Users\<Username> ディレクトリに、
という名前のフォルダを作成します。ssh
。説明C:\Users\<Username> を実際のディレクトリに置き換えます。 この例では、
C:\Users\test
が使用されています。デスクトップの左下隅にあるアイコンをクリックし、
Windows PowerShell
と入力します。[Windows PowerShell] をクリックします。
C:\Users\usernameディレクトリで、mkdirを実行し
ます。ssh
コマンドを実行して、という名前のフォルダを作成します。ssh
。
で。ssh
フォルダ、config
という名前のファイルを作成します。重要config
ファイル名に拡張子を含めることはできません。config
ファイルにコンテンツを追加します。次のコマンドのali-instance-cli.exeを、ali-instance-cliファイルの絶対パスに置き換えます。 この例では、
C:\Users\test\ali-instance-cli.exe
が使用されています。ホストi-* ProxyCommand C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "ali-instance-cli.exe ssh -i '% h' -- port' % p'"
AccessKeyペアまたはSTSトークンを設定します。
AccessKeyペアまたはSTSトークンの取得方法については、「AccessKeyペアの作成」または「STSとは」をご参照ください。
を選択して [実行] ダイアログボックスを開きます。 cmdと入力し、Enter
を押してコマンドプロンプトウィンドウを開きます。testディレクトリに切り替えます。
cd C:\ユーザー \テスト
認証方法を設定します。
次の認証方法がサポートされています。
AccessKeyペアベースの認証
次のコマンドを実行し、プロンプトに従ってAccessKey ID、AccessKey secret、およびリージョンIDを入力します。
. \ali-instance-cli.exe configure -- mode AK
STSトークンベースの認証
説明次のコマンドで、region、ak、sk、およびtokenを実際のリージョンID、AccessKey ID、AccessKey secret、およびSTSトークンに置き換えます。
を設定するali-instance-cli.exe. \set -- mode StsToken -- region "region" -- access-key-id "ak" -- access-key-secret "sk" -- sts-token "token"
次のようなコマンド出力は、認証方法が設定されていることを示します。
Session Manager Clientで次のコマンドを実行して、RSA公開鍵および鍵ファイルを生成します。
ssh-keygen -t rsa
プロンプトに従ってEnterキーを押します。 次のようなコマンド出力は、公開鍵と鍵ファイルが生成されたことを示します。
説明生成される公開キーのデフォルトパスは、C:\Users\Administrator/.ssh/id_rsa.pubです。
Session Manager Clientで次のコマンドを実行して、接続先のインスタンスに公開鍵を送信します。
. /ali-instance-cli send_public_key -- instance <instance-id> -- public-key "<オンプレミス公開鍵ファイルまたはオンプレミス公開鍵ファイルのパス>" -- user-name testuser
説明-- user-nameパラメーターは、指定された公開キーのユーザー名を指定します。 この例では、-- user-nameはtestuserに設定されています。 ユーザー名を指定しない場合、パラメーターはデフォルトでrootに設定されます。 ユーザー名を指定する場合は、指定したユーザー名がインスタンスに存在することを確認してください。
次のSSHコマンドのいずれかを実行して、パスワードの代わりに公開鍵を使用してインスタンスに接続します。
インスタンスのパブリックIPアドレスを使用して、インスタンスに接続します。
ssh -i ~/.ssh/id_rsa testuser @ instance_ip
説明~/.ssh/id_rsaを実際のキーファイルパスに、instance_ipを接続先のインスタンスのIPアドレスに、testuserを接続に使用するユーザー名に置き換えます。
インスタンスのIDを使用して、インスタンスに接続します。
ssh -i ~/.ssh/id_rsa testuser @ instance_id
説明~/.ssh/id_rsaを実際のキーファイルパスに、instance_idを接続先のインスタンスのidに、testuserを接続に使用するユーザー名に置き換えます。
次のコマンド出力は、Session Managerを使用してSSH経由でインスタンスに接続していることを示しています。
FAQ
パスワードフリーモードでインスタンスに接続しようとすると、パスワードの入力が求められるのはなぜですか。
パブリックキーがインスタンスに登録された後、キーはインスタンスで60秒間のみ有効になります。 公開鍵の有効期限が切れているかどうかを確認します。