githubからのOpenSSHインストールするときのエラー対処

windowsには標準でアプリが入っているが、それがインストールできないとき、githubにあるインストーラーを使う。

もともと、unix, linux用に開発されたものだが、windowsも使えるようになっている。

ちなみに、Install the OpenSSH Server コマンドは、標準搭載されているアプリを使用している。

OpenSSH をインストールする

https://learn.microsoft.com/ja-jp/windows-server/administration/openssh/openssh_install_firstuse

openSSHがインストールされているか確認する場合は以下のコマンドをPowerShellで打つ。

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

githubからインストールした場合、このコマンドではインストールされたことはわからないので、サービスアプリで確認する。

手順

簡単に手順だけ

  1. https://github.com/PowerShell/Win32-OpenSSH/releases から、OpenSSH-Win64.zipをダウンロードする。
  2. 展開して、任意の場所に置く。
  3. システム環境変数にOpenSSH-Win64までのパスを登録しておく。
  4. powershellを管理者権限で実行する。
  5. OpenSSH-Win64フォルダまで移動する。
  6. sshコマンドが実行できることを確認。
  7. Set-ExecutionPolicy RemoteSigned コマンドを打ってYと打つ。これはインストーラーのポリシーの認証を飛ばすもの。
  8. .\install-sshd.ps1 を打つ
  9. sshのカギの設定など聞かれるが、ほとんどYを打っておけばいいだろう。
  10. sshd and ssh-agent services successfully installed とでればOK

参考

これがわかりやすい

https://sorceryforce.net/ja/tips/sftp-setup-server-open-ssh-windows

使い方

起動

net start sshd
もしくは、
Start-Service sshd

終了

net stop sshd
もしくは
Start-Service sshd

OSの終了とともにssh接続は切断されるので、自動起動を設定しておく。

windows検索内でサービスと検索し、OpenSSH SSH Server を右クリックでプロパティを開く。

スタートアップを自動に変更する。

コマンドで設定する場合

Set-Service sshd -StartupType Automatic

さらにファイアーウォールの設定も必要である。

コマンドで実行すると以下になる。

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

TCPポート22番を開放する。

SSHサーバーにログインする

まずは、OpenSSH内のsshd_config_defaultをコピーして、sshd_configを作成する。

今回は、Windows内にもともとあるOpenSSHではなく、ダウンロードしたC:\OpenSSH-Win64のsshd_configを使う。

まずはパスワード認証でログインできるように、以下のコメントアウトを外して、yesにする。

PasswordAuthentication yes

一度Serverを再起動して、以下のコマンドでログインする。

この時点でWindowsユーザーのアカウントとパスワードでログインできる。

ssh localhost -l [user名]

これでサーバー側にログインできた。

SSHキーを作成

SSHクライアントの接続もとで認証キーを作成する必要がある。

SSHクライアントがインストールされていないとできない。

ssh-keygen -t rsa -b 4096

Enter3回押す。

このクライアント側で作成した公開キーを複製して、サーバー側になる端末のフォルダーに置く。

WindowsServer 2016 にsshd をインストールして鍵認証 SSH 接続ができるようにする。

https://zapping.beccou.com/2021/09/02/install-sshd-on-windowsserver-2016-and-ssh-connect/

下記参照

WindowsにOpenSSHをインストールする

https://obenkyolab.com/?p=1681

sshクライアントの入っている端末から、sshサーバーをインストールした端末への通信確認を行う。

サーバー側(送信先)とクライアント側(送信元)があるので両方必要なら、両方インストールする必要がある。

エラーが出る場合

The term ‘install-sshd.ps1’ is not recognized as the name of a cmdlet, function, script file, or operable program.

install-sshd.ps1が見つからないということなので、powershellの今いるフォルダー内にファイルがあるかどうか確認する。

ある場合は、以下のコマンドで対処できるはず。

Set-ExecutionPolicy RemoteSigned

ない場合は、ダウンロードしたフォルダが、OpenSSH-Win64か確認する。

openssh-portableには、深い階層のwin32/opensshフォルダー内にある。

sshd.exe is not present in script path At C:\openssh-portable-latestw_all\contrib\win32\openssh\install-sshd.ps1:27 char:5

これはopenssh-portableをインストールしようとした時に起きた。

このフォルダー内にsshd.exeは存在しない。

これ自体がunixやLinuxのものなので、buildして使うものである。

sshd.exeをコピーしても使えるのか?一応進めるようだ。

The term ‘sc.exe’ is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

これに一番手間取った。

sc.exeがコマンドとしても、ファイルとしても見つからないということである。

通常ならsc.exeはWindows/System32フォルダー内に存在している。

まず、

Get-Command sc.exe

として、実行できるか確認する。実行できなければパスが通っていない。

次に、システム環境変数を確認する。

システム環境変数には

C:\Windows\System32

ではなく、

%SystemRoot%\System32

と設定する。

これで解決できる。

install-sshd.ps1 dosen’t work well. #2023

https://github.com/PowerShell/Win32-OpenSSH/discussions/2023

githubからのOpenSSHインストールするときのエラー対処」への2件のフィードバック

コメントは受け付けていません。