Linux と同様に SSH 経由で Wi​​ndows に接続する

私は Windows マシンに接続することにいつもイライラしていました。 いいえ、私は Microsoft とその製品の反対者でも支持者でもありません。 各製品はそれぞれの目的のために存在しますが、それが目的ではありません。
Windows サーバーに接続するのは、私にとって常に耐え難いほど苦痛でした。これらの接続は XNUMX か所で構成されているか (HTTPS を使用した WinRM など)、あまり安定して動作しないか (海外の仮想マシンへの RDP など) のいずれかであるためです。

そこで、偶然このプロジェクトに出会って、 Win32-OpenSSH, 私のセットアップ体験を共有することにしました。 おそらく、このツールは誰かの多くの神経を救ってくれるでしょう。

Linux と同様に SSH 経由で Wi​​ndows に接続する

インストールオプション:

  1. 手動で
  2. スルー パッケージ チョコレート
  3. Ansible 経由、たとえばロール jborean93.win_openssh

次に、最初の点についてお話します。残りの部分はほぼすべて明らかになっています。

このプロジェクトはまだベータ段階にあるため、運用環境での使用はお勧めできません。

したがって、最新リリースをダウンロードしてください。現時点では、 7.9.0.0p1-ベータ版。 32 ビット システムと 64 ビット システムの両方のバージョンがあります。

開梱してください C:プログラム ファイルOpenSSH
正しく操作するための必須ポイント: SYSTEM そして管理者グループ。

スクリプトを使用したサービスのインストール インストール-sshd.ps1 このディレクトリにあります

powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1

ポート 22 での受信接続を許可します。

New-NetFirewallRule -Name sshd -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22

説明: アプレット 新しい NetFirewallRule Windows Server 2012 以降で使用されます。 最も古いシステム (またはデスクトップ) では、次のコマンドを使用できます。

netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22

サービスを開始しましょう:

net start sshd

起動時に、ホストキーが自動的に生成されます(欠落している場合)。 %プログラムデータ%ssh

次のコマンドを使用して、システムの起動時にサービスの自動起動を有効にできます。

Set-Service sshd -StartupType Automatic

デフォルトのコマンド シェルを変更することもできます (インストール後のデフォルトは CMD):

New-ItemProperty -Path "HKLM:SOFTWAREOpenSSH" -Name DefaultShell -Value "C:WindowsSystem32WindowsPowerShellv1.0powershell.exe" -PropertyType String -Force

明確化: 絶対パスを指定する必要があります。

次は何ですか?

そしてそれをセットアップしました sshd_configに置きます C:プログラムデータ。 例えば、

PasswordAuthentication no
PubkeyAuthentication yes

そしてユーザーフォルダ内にディレクトリを作成します .ssh、その中のファイル 認可されたキー。 そこに公開鍵を書き留めます。

重要な説明: ファイルが配置されているディレクトリに属する​​ユーザーのみが、このファイルに書き込む権限を持つ必要があります。

ただし、これに問題がある場合は、設定で権利チェックをいつでもオフにすることができます。

StrictModes no

ちなみに、 C:プログラム ファイルOpenSSH スクリプトは 2 つあります (HostFilePermissions.ps1 を修正, UserFilePermissions.ps1 を修正)、権利を修正する必要がありますが、その義務はありません。 認可されたキー, しかし、何らかの理由で登録されません。

サービスを再起動することを忘れないでください sshd 変更を適用した後。

ru-mbp-666:infrastructure$ ssh [email protected] -i ~/.ssh/id_rsa
Windows PowerShell
Copyright (C) 2016 Microsoft Corporation. All rights reserved.

PS C:UsersAdministrator> Get-Host


Name             : ConsoleHost
Version          : 5.1.14393.2791
InstanceId       : 653210bd-6f58-445e-80a0-66f66666f6f6
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : en-US
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
DebuggerEnabled  : True
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

PS C:UsersAdministrator>

主観的な長所/短所。

長所:

  • サーバーに接続するための標準的なアプローチ。
    Windows マシンの数が少ない場合、次のような場合に非常に不便です。
    ここでは ssh 経由で、ここでは rdp を使用します。
    一般に、要塞のベスト プラクティスは、まず ssh トンネルを作成し、それを介して RDP を実行することです。
  • セットアップの容易さ
    これは明らかだと思います。
  • リモートマシンとの接続と作業の速度
    グラフィカル シェルがないため、サーバー リソースと送信データ量の両方が節約されます。

短所:

  • RDP を完全に置き換えるものではありません。
    残念ながら、コンソールからすべてを実行できるわけではありません。 GUI が必要な状況を指します。

記事で使用した資料:
プロジェクト自体へのリンク
インストールオプションは恥知らずにもからコピーされています Ansible ドキュメント.

出所: habr.com

コメントを追加します