目次
一つ、環境
- Windows 11 Home 中国語版
- VS コードのバージョン: 1.80.2
- VMware® Workstation 16 Pro (バージョン: 16.1.2 ビルド-17966106)
- ubuntu-22.04.2-デスクトップ-amd64
2 つの重要なステップ
- Windows に OpenSSH をインストールする
- VS Code は Remote-SSH プラグインをインストールします
3 つの詳細な手順
- UbuntuにSSHサーバーをインストールします。ターミナルを開き、次のコマンドを順番に実行して、OpenSSH サーバーをインストールし、SSH サーバーを起動します。
- sudo aptアップデート
- sudo apt install openssh-server
- サービスSSHDの再起動
- Windows で VS Code を開き、「Remote - SSH」拡張機能をインストールします。サイドバーの拡張表示で「Remote - SSH」を検索し、インストールします。
- VS Code でコマンド パレットを開きます。コマンド パレットを開くには、 を押す (または
Ctrl+Shift+P
VS Code の左下隅にある[リモート ウィンドウを開く] ボタンをクリックする) ことができます。- コマンド パレットに「Remote-SSH: Connect to Host」と入力し、そのオプションを選択します。
- ポップアップ メニューで[ SSH ホストの構成] を選択します。
- 「~/.ssh/config」ファイルを選択するか、新しい設定ファイルを作成します (この設定ファイルには複数の Linux サーバー情報を設定できます)。
- 構成ファイルに次の内容を追加します。ホスト名は Ubuntu の IP アドレスまたはホスト名に置き換え、ユーザー名は Ubuntu のユーザー名に置き換えます。
- コマンド パネルに戻り、「Remote-SSH: Connect to Host 」と再度入力し (またはVS Code の左下隅にある「 Open Remote Window 」ボタンをクリックし)、構成した接続を選択します。
- 認証のために Ubuntu ユーザー パスワードを入力しますが、ここで次のエラーが発生し、OpenSSH クライアントが Windows 環境にインストールされていないことを示します。
- PowerShell を管理者として実行し、PowerShell を使用して OpenSSH をインストールします。OpenSSH が利用可能であることを確認するには、次のコマンドを実行します。
- Get-WindowsCapability -オンライン | Where-オブジェクト名 - 'OpenSSH*' のような
- SSH クライアントがインストールされていない場合、上記のコマンドは次のように出力します。
- 名前 : OpenSSH.Client~~~~0.0.1.0
- 状態 : 存在しません
- 次に、次のコマンドを実行して OpenSSH クライアントをインストールします。
- Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0
- OpenSSH サーバーを起動して使用を開始するように構成し、次のコマンドを実行して起動します。
sshd
- サービス開始 sshd
- Set-Service -Name sshd -StartupType 'Automatic'
- if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) { Write-Output "ファイアウォール ルール 'OpenSSH-Server-In-TCP' は存在しません、作成しています..." New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Actionallow -LocalPort 22 } else { Write-Output 「ファイアウォール ルール 'OpenSSH-Server-In-TCP' が作成され、存在します。」}
- 次に、 VsCode インターフェイスの左側の列にある「リモート エクスプローラー」をクリックし、展開された「リモート Linux 接続情報」リストでいずれかを右クリックして、次のようにリモート接続を確立します。
- 接続が成功すると、VS Code は新しいウィンドウを開き、Ubuntu 上のファイル システムを表示します ( [ファイル] > [フォルダーを開く]を使用して、リモート ホーム ディレクトリ内のフォルダーを参照して開くことができます)。
- その後、VS Code の Ubuntu 環境でコードを作成、保存、実行できます。
- SSH 接続を終了する場合は、[ファイル] > [リモート接続を閉じる]を使用して、ローカルでの VS Code の実行に戻ることができます。
4.シークレット-無料のリモート接続
VSCode で Linux システムへのパスワードなしのリモート ログインを実装するには、SSH キー ペアを使用できます。詳細な手順は次のとおりです。
- SSH キー ペアを生成する:まず、ローカル コンピューター (Windows など) で SSH キー ペアを生成する必要があります。ターミナルまたはコマンド プロンプト ウィンドウ (PowerShell など) を開き、次のコマンドを実行します。
- ssh-keygen -t rsa
- プロンプトに従って、キーファイルの保存場所とパスワード、その他の設定を選択します。これにより、秘密キー ファイル (
id_rsa
) と公開キー ファイル (id_rsa.pub
) が生成されます。- 公開キー ファイルを Linux サーバーに追加する:公開キー ファイルを
~/.ssh/authorized_keys
リモート Linux サーバー上のファイルにアップロードします。C:/Users/86152/.ssh/id_rsa.pub
次のコマンドを使用して、 公開キー ファイルをサーバーにコピーします (公開キー ファイルはローカル ディレクトリにあります )。
- scp C:/Users/86152/.ssh/id_rsa.pub ユーザー名@server_ip:~/
username
接続する Linux サーバーのユーザー名に置き換え、server_ip
サーバーの IP アドレスに置き換えます。このコマンドは、公開キー ファイルをリモート サーバーのホーム ディレクトリにコピーします。- SSH を使用して Linux サーバーに接続します。次のコマンドに続いてログイン パスワードを使用して認証します。
- ssh ユーザー名@server_ip
- 公開キーを
authorized_keys
ファイルに追加します:次のコマンドを使用して、公開キー ファイルの内容を~/.ssh/authorized_keys
ファイルに追加します (ディレクトリが存在することを確認し.ssh
、まだ存在しない場合は作成します)。
- cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
- ファイル権限を設定する:次のコマンドを使用してファイル権限の問題を修正します。これにより、
.ssh
ディレクトリの権限が 700 (所有者は読み取り、書き込み、および実行の権限を持つ) になり、authorized_keys
ファイルの権限が 600 (所有者は読み取りおよび書き込みの権限を持つ) になります。
- chmod 700 ~/.ssh
- chmod 600 ~/.ssh/authorized_keys
- 上記の手順を完了すると、パスワードを入力せずに VsCode 経由で Linux サーバーに接続できるようになります。
5、参考リンク
6 、余分な知識
1.SSH (Secure Shell) は、リモート ログインと安全なファイル転送のためのネットワーク プロトコルです。これは、安全でないネットワーク接続 (インターネットなど) を介してクライアントとリモート サーバー間の安全な暗号化通信の手段を提供します。以下は SSH の概要です。
- セキュリティ: SSH は、安全でないネットワーク接続を介して送信されるデータのセキュリティを確保する暗号化プロトコルです。公開キー暗号化と対称キー暗号化を使用して通信の機密性を保護し、データの盗聴や改ざんを防ぎます。
- リモート ログイン: SSH の最も一般的な用途はリモート ログインです。SSH クライアントを使用すると、ユーザーはインターネット経由でリモート サーバーに接続し、サーバー上で直接操作しているかのようにコマンドを実行し、リモート サーバー上のリソースにアクセスできます。
- ファイル転送: SSH は、SCP (Secure Copy) または SFTP (SSH File Transfer Protocol) と呼ばれる安全なファイル転送メカニズムを提供します。SCP または SFTP を使用すると、ユーザーはローカル コンピューターとリモート サーバー間でファイルを安全に転送できます。
- ユーザー認証: SSH は認証に公開キー暗号化を使用します。SSH 接続を確立するとき、クライアントとサーバーの間で公開キーが交換されます。クライアントはキーのペア (公開キーと秘密キー) を生成し、公開キーをサーバーに送信します。サーバーは公開キーを特定のユーザーに関連付け、それを使用してユーザーを認証します。
- ポートと構成: SSH は通信にデフォルトの TCP ポート 22 を使用します。ただし、SSH サーバーのポートは必要に応じて変更できます。さらに、SSH サーバーの構成ファイルはサーバー上に常駐し、さまざまな動作や制限を定義するために使用できます。
- クライアントとサーバー: SSH は、SSH クライアントと SSH サーバーで構成されます。クライアントは、SSH 接続を開始し、コマンドとリクエストをサーバーに送信するために使用されます。サーバーはクライアント接続を受け入れ、必要なサービス (ログイン、ファイル転送など) を提供する責任があります。
- パブリック ネットワーク: SSH は安全な暗号化通信を提供するため、信頼できないパブリック ネットワーク上のリモート サーバーにアクセスするために広く使用されています。SSH を介して、ユーザーは機密データの安全性を心配することなく、インターネット上のリモート サーバーを安全に使用できます。
つまり、SSH は安全なリモート ログインおよびファイル転送プロトコルであり、暗号化された通信および認証メカニズムを提供し、ユーザーが安全でないネットワーク上でリモート システムに安全にアクセスして操作できるようにします。
2. OpenSSH は、リモート ログインおよび安全なファイル転送機能を実装するオープン ソース ソフトウェア スイートです。これは SSH プロトコルの実装であり、ネットワーク上で安全なリモート アクセスとファイル転送を行うための一連のコマンド ライン ツールとデーモンを提供します。以下は OpenSSH の概要です。
- 機能: OpenSSH は、暗号化された通信プロトコルを通じて安全なリモート ログインとファイル転送機能を提供します。暗号化、公開キーと認証、リモート コマンド実行、ファイル転送 (SCP および SFTP 経由)、ポート転送やトンネリングなどの機能を含む、SSH プロトコルのさまざまな機能をサポートします。
- セキュリティ: OpenSSH は安全な通信とデータ送信の提供に努めています。暗号化技術を使用して通信内容を保護し、送信中のデータの盗聴、改ざん、偽造を防止します。これには、対称キー アルゴリズムと公開キー暗号化を使用した通信の暗号化、パスワード、公開キー、証明書などのさまざまな認証方法を使用したユーザーの認証の確保が含まれます。
- コンポーネント: OpenSSH は、いくつかのコア コンポーネントで構成されます。その中で、OpenSSH クライアント (ssh) は SSH 接続を開始し、リモート ホストと対話するために使用されます。OpenSSH サーバー (sshd) はリモート ホスト上で実行され、SSH 接続の受け入れ、ユーザー認証の実行、リモート ログインとファイル転送の提供を担当します。キー ペアを生成および管理するための ssh-keygen や、秘密キーによるプロキシ認証を管理するための ssh-agent などの補助ツールもあります。
- オペレーティング システムのサポート: OpenSSH は、さまざまな Unix 系システム (Linux、BSD など) や Microsoft Windows のバージョンを含む、さまざまなオペレーティング システム上で実行できます。OpenSSH は、安全なリモート ログインとファイル転送のために、これらのシステムに簡単にインストールして構成できます。
- 構成ファイルとカスタマイズ: OpenSSH は、ユーザーが特定のニーズに合わせてカスタマイズできる柔軟な構成オプションを提供します。OpenSSH 設定ファイル (sshd_config など) を変更することで、セキュリティ ポリシー、アクセス コントロール ルール、ポート設定、ユーザー設定などを定義できます。これにより、OpenSSH はさまざまな環境やニーズに適応できるようになります。
- コミュニティ サポートとオープン ソース: OpenSSH はオープン ソース ソフトウェアであり、そのソース コードは公開されています。これにより、ユーザーと開発者はコードを自由にレビュー、変更、配布し、改善に貢献できるようになります。OpenSSH には強力なコミュニティ サポートと幅広いユーザー ベースがあるため、セキュリティを維持しながら継続的に改善および更新できます。
全体として、OpenSSH は、安全なリモート ログインとファイル転送機能を提供し、暗号化された通信プロトコルを通じてデータとユーザー ID のセキュリティを確保する強力なオープン ソース ソフトウェア スイートです。リモートシステムの管理、システムメンテナンスの実行、リモート連携、バックアップ、ファイル転送など、さまざまなアプリケーションシナリオで広く使用されています。