ちょっと話題の記事

windowsに公式なsshdをインストールし、linuxからwindowsにssh接続

2015.12.16

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コンニチハ、千葉です。

Microsoft公式からWin32-OpenSSHがプレリリースされております。

弊社のブログでも紹介があり、windows > linuxへの接続してみたというエントリーがあります。

今回は、windowsにsshdをインストールし接続し、linux > windowsのssh接続を行ってみます。

OpenSSHのインストール

まずは、OpenSSHをインストールします。こちらよりOpenSSHをダウンロードします。

※上記リンクは2015/11/9版なので最新版はこちらよりご確認ください

ダウンロードしたzipファイルを展開します。今回は、Cドライブ直下にフォルダを配置することにします。

作業は、powershellから実施するのでpowershellを起動します。想定した場所にファイルあることを確認しましょう。

PS C:\Users\Administrator> dir C:\OpenSSH-Win32

環境変数Pathに、「C:\OpenSSH-Win32」を追加してpowershellを起動しなおします。

パスが通っていることを確認します。

PS C:\Users\Administrator> ssh --help
unknown option -- -
usage: ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
           [-D [bind_address:]port] [-E log_file] [-e escape_char]
           [-F configfile] [-I pkcs11] [-i identity_file]
           [-L address] [-l login_name] [-m mac_spec]
           [-O ctl_cmd] [-o option] [-p port]
           [-Q cipher | cipher-auth | mac | kex | key]
           [-R address] [-S ctl_path] [-W host:port]
           [-w local_tun[:remote_tun]] [user@]hostname [command]

SSHキーを設定します

sshdで利用するキーファイルを作成します。

PS C:\Users\Administrator> cd C:\OpenSSH-Win32
PS C:\OpenSSH-Win32>

PS C:\OpenSSH-Win32> ssh-keygen.exe -A
C:\OpenSSH-Win32\ssh-keygen.exe: generating new host keys: RSA DSA ECDSA ED25519

ファイアウォールの設定

22番ポートを開放してあげます。

PS C:\OpenSSH-Win32> New-NetFirewallRule -Protocol TCP -LocalPort 22 -Direction Inbound -Action Allow -DisplayName SSH


Name                  : {c0fa26f8-00ef-4fa5-a262-28c1a25760d0}
DisplayName           : SSH
Description           :
DisplayGroup          :
Group                 :
Enabled               : True
Profile               : Any
Platform              : {}
Direction             : Inbound
Action                : Allow
EdgeTraversalPolicy   : Block
LooseSourceMapping    : False
LocalOnlyMapping      : False
Owner                 :
PrimaryStatus         : OK
Status                : 規則は、ストアから正常に解析されました。 (65536)
EnforcementStatus     : NotApplicable
PolicyStoreSource     : PersistentStore
PolicyStoreSourceType : Local

sshdのセットアップ

sshdセットアップ用のcmdを実行します。

PS C:\OpenSSH-Win32> setup-ssh-lsa.cmd

リブート

OSの再起動を行います。

sshdサービスへの登録

サービスで起動するようにsshdをサービスに登録します。

PS C:\Users\Administrator> sshd install
Service installed successfully

sshdサービスを起動

sshdをサービスから起動してみましょう。

PS C:\Users\Administrator> net start sshd
SSHD サービスを開始します.
SSHD サービスは正常に開始されました。

windows起動時に自動でsshdを起動させたい場合は、こちらを実行

PS C:\Users\Administrator> Set-Service sshd -StartupType Automatic

linuxからwindowsにsshで接続してみる

いざ!sshでwindowsに接続してみます。

local$ ssh Administrator@xxx.xxx.xxx
The authenticity of host 'XXX.XXX.XXX.XXX (XXX.XXX.XXX.XXX)' can't be established.
ECDSA key fingerprint is SHA256:XXXXXXXXXXXXXXXXXXXXX
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'XXX.XXX.XXX.XXX' (ECDSA) to the list of known hosts.
Administrator@XXX.XXX.XXX.XXX's password:
Microsoft Windows [Version 6.3.9600]
(c) 2013 Microsoft Corporation. All rights reserved.

Administrator@WIN-UAIF2EQBHK8 C:\Users\Administrator>

パスワードにはAdministratorのパスワードを入力。

接続できました!

おそらくコマンドプロンプトでの接続のようです。(コマンドを打つと文字コードが違うので文字化けします)

sshdのアンイストール

やっぱりやめよう。というときのアンインストール。

PS cd C:\> net stop sshd
PS cd C:\> sshd.exe uninstall

さいごに

これで、windowsにもsshでログインできることが確認できました! コマンドラインで作業できるようになると、とっても便利ですね。

参考