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からインストールした場合、このコマンドではインストールされたことはわからないので、サービスアプリで確認する。
手順
簡単に手順だけ
- https://github.com/PowerShell/Win32-OpenSSH/releases から、OpenSSH-Win64.zipをダウンロードする。
- 展開して、任意の場所に置く。
- システム環境変数にOpenSSH-Win64までのパスを登録しておく。
- powershellを管理者権限で実行する。
- OpenSSH-Win64フォルダまで移動する。
- sshコマンドが実行できることを確認。
- Set-ExecutionPolicy RemoteSigned コマンドを打ってYと打つ。これはインストーラーのポリシーの認証を飛ばすもの。
- .\install-sshd.ps1 を打つ
- sshのカギの設定など聞かれるが、ほとんどYを打っておけばいいだろう。
- 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回押す。
このクライアント側で作成した公開キーを複製して、サーバー側になる端末のフォルダーに置く。
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件のフィードバック
コメントは受け付けていません。