-
Notifications
You must be signed in to change notification settings - Fork 0
MS_OpenSSH
- 戻る(SSH)
- Windows 10 以降に標準搭載
- CMD、PowerShellで ssh コマンドを使用できる。
補足(Windows に OpenSSH が入った意味): これは地味だが
Windows の運用スタイルを変えた変更である。【従来】 Windows から Linux へ → PuTTY / Tera Term を別途インストール Windows から Windows へ → RDP(GUI)、WinRM / PowerShell Remoting 【現在】 どちらも ssh コマンド 1 つで済む特に重要なのは、Windows が SSH サーバにもなれる点である
(OpenSSH Server 機能)。これにより、
効果 内容 踏み台を統一できる Linux/Windows で同じ手順・同じ鍵 CI/CD から扱いやすい Ansible、GitHub Actions 等が SSH 前提 PowerShell Remoting over SSH WinRM ではなく SSH でリモート実行できる 鍵認証 パスワードを送らない運用が可能 なお、Git for Windows や WSL にも ssh が同梱されるため、
環境に複数の ssh が存在することになる。
鍵の置き場所(%USERPROFILE%\.sshと WSL 内の~/.ssh)が
別々になる点は混乱しやすいので注意する。
- Windows Server 2019 または Windows 10 1809 なら、機能を有効化すれば良い。
- [設定]を開始し、[アプリ]>[アプリと機能]>[オプション機能の管理]の順に選択。
補足(クライアントとサーバは別の機能): オプション機能には
2 つあり、混同しやすい。
機能 役割 既定 OpenSSH クライアント ssh、scp、ssh-keygenWindows 10 1809 以降は既定で有効 OpenSSH サーバー sshd(このマシンに繋がせる)無効(明示的に追加が必要) PowerShell からも導入できる。
Get-WindowsCapability -Online -Name OpenSSH* Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0 Start-Service sshd Set-Service -Name sshd -StartupType Automaticサーバー機能を有効にすると22 番ポートが開くため、
- Windows ファイアウォールの規則を送信元で絞る、
- パスワード認証を無効化して鍵のみにする
(sshd_configのPasswordAuthentication no)といった対策が要る
(インターネットに直接公開しないこと。
リモート デスクトップ ゲートウェイの 3389 番と同じ考え方)。
ssh ユーザ名@アドレス(IP等)
ユーザ名@アドレス(IP等)'s password: xxxxxx
ssh -i <秘密キーのパス> ユーザ名@アドレス(IP等)
補足(Windows 特有の落とし穴:鍵のパーミッション): Linux では
秘密鍵のパーミッションを 600 にするが、
Windows では NTFS の ACL が同じ役割を果たす。秘密鍵の ACL が緩いと、次のエラーで接続を拒否される。
Permissions for 'xxx.pem' are too open. It is required that your private key files are NOT accessible by others.対処は、エクスプローラのプロパティから
継承を無効化し、自分以外のアカウントを削除する、
またはicaclsを使う。icacls key.pem /inheritance:r icacls key.pem /grant:r "%USERNAME%:R"KiTTY(PuTTY)で述べられている
サーバ側の~/.sshとauthorized_keysのパーミッションと
対になる話で、鍵認証は「両側の権限が正しいこと」が前提である。なお、毎回
-iを書かずに済ませるには
%USERPROFILE%\.ssh\configに設定を書く。Host myserver HostName 10.0.0.10 User azureuser IdentityFile ~/.ssh/id_ed25519これで
ssh myserverだけで接続できる。
- exit で切断できる。
- ダブルホップ的な事もできる。
補足(「ダブルホップ」の実現方法): 踏み台を経由して
奥のサーバに入る方法は複数あり、ProxyJumpが現在の推奨である。
方法 コマンド 特徴 多段ログイン 踏み台に入ってから ssh踏み台に秘密鍵を置くことになる(危険) ProxyJump(-J)ssh -J bastion target鍵は手元だけ。OpenSSH 7.3 以降 エージェント転送(-A) ssh -A bastion踏み台が侵害されるとエージェントを悪用され得る ssh -J user@bastion user@targetあるいは
configに書く。Host target HostName 10.0.1.20 ProxyJump bastion踏み台に秘密鍵を置かないという点が重要で、
踏み台が侵害されても鍵が漏れない。
AzureのPoC環境を契約するで
「踏み台(Jumpbox)は危険」とされているのは、
まさに踏み台に資格情報が集まることを指しており、
ProxyJumpはその一部を緩和する手段になる。なお、ポート フォワード(
-L/-R)を使えば、
踏み台経由で RDP や DB に接続することもできる。ssh -L 13389:target:3389 user@bastion手元の 13389 番に RDP 接続すると、踏み台経由で target に届く。
- Windows Server 用 OpenSSH のインストール | Microsoft Docs
https://docs.microsoft.com/ja-jp/windows-server/administration/openssh/openssh_install_firstuse
Tags: 移行, Windows, Linux
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。