0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Win10のcygwin上のSSHデーモンをWindowsのバッチで起動

Last updated at Posted at 2021-05-09

image.png
■目的
Windows10にCygwinを複数入れて、複数のSSHデーモン(以降SSHデーモン→SSHDと記載)をマシン起動時に自動起動させる。

■説明
Cygwinを複数インストールして、WindowsのbatファイルでそれぞれのSSHDを読み込み、スタートアップに作ったbatファイルのショートカット登録して、Windows10起動後自動で起動させようという、普通はやらない事を敢えてやってみました。
※なお、今回はCygwinのパスをWindowsに通す必要はないです。

その備忘録として以下に残しておきたいと思います。

■事前準備
まずは事前準備です。
Cygwinをインストールし、SSHDも入れましょう。

  • Cygwinをインストールする
     
    ※Cygwinのインストール方法は、google等でちょっと探せばたくさん出てくると思うので割愛します。
  • CygwinでSSHDを導入する
     
    Cygwinのsetup.exeを実行し、以下の図のようにViewCategoryを選択し、検索文字列にsshと入れて、AllのNew欄Installを選択すれば、SSH接続に必要なプログラムをすべてインストールしてくれます。
    image.png

■SSHD設定
それでは、SSHDの設定をしていきましょう。
手順としては以下の通りです。

  1. それぞれのCygwin上で“ssh-host-config”を実行する
     
    ※このコマンドを実行することで、/etc/配下にSSH関連のファイル(sshd_config等)が出力されます。
  2. それぞれのCygwinのSSHD設定ファイル(sshd_config)でポート番号を設定する
     
    複数のSSHDで同じポート番号を使用したり、複数のサービスで同じポート番号を使用することはできません
    そのため、インストールした全てのSSHDのポート番号が被らないようにする必要があります。

    ポート番号の設定箇所はSSHDのバージョンによって異なりますが、Cygwinに限っては13行目辺りに有ると思います。

    デフォルトではおそらく“#Port 22”と、“#”でコメントアウトされていると思うので、コメントアウトを外し、“Port [設定したいポート番号]”と書き換えます。
  3. sshd_configファイル内のPasswordAuthenticationを“yes”に設定する
     
    これを設定しないと、パスワードによるSSH接続ができない場合があります。
    この設定箇所もSSHDのバージョンによって異なりますが、これもcygwinに限れば57行目か68行目辺りにあると思います。

    おそらくこの行もデフォルトでは“#”でコメントアウトされていると思うので、コメントアウトを外し、“PasswordAuthentication yes”にします。

■SSHD自動起動用bat作成
いよいよbatファイルの作成ですが、意外と簡単な方法で実現できました。
以下、batファイルの中身です。

SSHD自動起動.bat
@ echo off
cd /d d:
D:\cygwin32\bin\bash --login -c "cd /bin; /usr/sbin/sshd"

rem D:\cygwin64\bin\bash --login -c "cd /bin; /usr/sbin/sshd"

D:\RedHatCygwin\bin\bash --login -c "cd /bin; /usr/sbin/sshd"

cd /d c:
C:\Linux\bin\bash --login -c "cd /bin; /usr/sbin/sshd"

私の環境では、D:\cygwin32にCygwinの32bit版を、D:\cygwin64にCygwinの64bit版を、D:\RedHatCygwin\にRedHat社純正のCygwinをインストールしてあり、C:\Linux\にはDarkMoonXがインストールされています。

なお、DarkMoonXはWindowsStoreからインストールできます。
また、64bit版CygwinのSSHDは、Windowsのサービスに“CYGWIN cygsshd”という名前で既に登録されているので、“rem”でコメントアウトしています。
行ごと削除してしまってもいいのですが、何となく消すのが嫌だったのでコメントアウトに留めました。

以下に各コマンドの説明を記載します。

  • 最初と途中に“cd”を使っていますが、これは対象の実行ファイルが今いるドライブ配下に無い場合、正常に動作してくれないことがあるので、念のため記載しています。

    今回の場合は各Cygwinのbashが入っているドライブですね。
- “cd /d ”の“/d”は、ドライブを跨いだフォルダの移動が出来るようになるオプションです。 書き方としては、“cd /d _[移動先フォルダ]_”になります。 上記ではd:やc:となっているのでもしかしたらこのオプションはいらないかもしれませんが、例えば今居るフォルダが“c:\Linux”で、そこから“d:\Cygwin32”に移動したい場合、この“/d”を省略してしまうとちゃんと移動してくれません。 - 3,5,7,10行目ではそれぞれ対象のCygwinでbashを読み込んでいます。
- “bash --login -c”でCygwinのbashにログインしています。 - “cd /bin;”で、Cygwin内の/binディレクトリに移動します。
※sshd起動に必要なdllファイル等は全てこの/binディレクトリに有ります。
ファイルパスを通していないので、SSHDを起動するのに必要なファイルが格納されているディレクトリに移動する必要があります。 - “/usr/sbin/sshd”でSSHDを起動しています。

ちなみにWindowsXP辺りまでなら、これらの他にホロン社が発売したXonWindows3というものもあったのですが、こちらは確か最近のWindowsではちゃんと動作しないんですよね。

■スタートメニューに登録する
batファイルが出来上がりましたので、あとはマシン起動時に自動でbatファイルを読み込むだけです。
色々な方法が有るのかもしれませんが、今回はWindowsの“スタートアップ”にbatファイルのショートカットを作る方法を説明します。

  1. WIndowsキー+Rキーで“ファイル名を指定して実行”ウィンドウを表示させる
  2. 名前(O):欄に“shell:startup”と入力する
  3. [Enter]キーを押下するか[OK]ボタンを左クリックする
  4. 表示されたフォルダ内に、上記で作成したbatファイルのショートカットを作成する

以上で次回WIndows起動時に自動でbatファイルが読み込まれ、複数のSSHDがバックグラウンドで自動起動します。

■参考にしたサイト

url サイト名 備考
https://bit.ly/3uBnezC Markdown記法 チートシート Qiitaでは初めての記事だったので、その書き方を勉強させていただきました。
編集画面の右上にあるのアイコンをクリックしたときに出てくる画面ですね。
https://bit.ly/3evg5LK cygwinを起動して特定のコマンドを実行するバッチファイルを作成する batファイルからCygwin内のSSHDを起動するコマンドの書き方の参考にさせていただきました。
http://bitly.oshiire.org/ 短縮URL作成 urlが長くなってしまうものが有ったので、こちらのサイトで短縮URLを生成させていただきました。

■最後に
ここまで読んでくれてありがとうございました。
一応動作を確認したPCの詳細を以下に記載します。

機種 TOSHIBA Dynabook T554/67KB
メモリ 8GB×2(16GB)
CPU Intel(R) Core(TM) i7-4700MQ CPU @ 2.40GHz 2.40 GHz
OS Windows 10 Home(64bit)
バージョン 20H2
OSビルド 19042.964
エクスペリエンス Windows Feature Experience Pack 120.2212.2020.0
今後も、『普通はやらないだろ。』というものを中心に記事にしていきたいと思っています。

後日、以下の環境でも動作確認しましたが、こちらはOSの初期化や修復インストールを繰り返したせいか、64bit版のCygwinのSSHDのサービスは登録されてませんでしたし、RedHatの公式サイトからダウンロードしたCygwin(以降:RH-CygWin)のSSHDの起動もしませんでした。

機種 lenovo ThinkPad T430
メモリ 12GB×1
CPU Intel(R) Core(TM) Intel(R) Core(TM) i5-3320M CPU @ 2.60GHz 2.60 GHz
OS Windows 10 Home(64bit)
バージョン Dev
OSビルド 21387.1
エクスペリエンス Windows 10 Feature Experience Pack 321.13101.0.3

64bit版CygwinのSSHDについては、この記事に記載したソースコードのコメントアウトを解除し、binディレクトリの場所をインストール先と合わせたところ、問題無く起動しました。

RH-CygwinのSSHDが起動しないことについては、Cygwinのインストールの順番に問題があるのか、PCの機種やOSのバージョンによってうまくいかないものがあるのか分かりませんが、今後も時間が有れば、自分ができる範囲で出来るだけお金は使わずにいろいろ試してみたいと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?