Windows – Linux間のSSH接続

2020-01-20

2020/01/20 追記

元々の記事はWindows Server 2012を想定して書いていたが、Windows Server 2019 またはWindows 10 1803からはOSで正式にサポートされるようになった。

インストール及び設定は下記にわかりやすくまとめられている。
Windows Server 2019 : OpenSSH : SSHサーバーの設定 : Server World


2017-09-26

Windows ServerからCentOSへSSH接続、またその逆にCentOSからWindows ServerへSSH接続する方法のまとめ。

Windows ServerからCentOSへSSH接続

以下はサーバー(CentOS)側のsshd_config設定時以外は、すべてクライアント(Windows Server)のPowerShellで操作。

OpenSSHの導入

下記の公式Wikiを参考にOpenSSHのダウンロードからインストールまで。

[参考] Install Win32 OpenSSH

環境変数に追加

どこからでもsshコマンドが使用できるように環境変数へ追加しておく。

[参考] PowerShellでSSHを利用してみた

> $Env:Path += ";C:\Program Files\OpenSSH-Win32"
> [Environment]::SetEnvironmentVariable('PATH', $Env:Path, 'Machine')

接続テスト

> ssh ユーザー名@接続先のIPアドレス
> 初めて接続したときは確認されるので「Yes」と入力
> パスワード入力

公開鍵認証

毎回パスワードを求められるのも煩わしく、スクリプトも組みにくい。
そこで、公開鍵認証を利用し、パスワード入力なしでSSH接続させる。

まず、クライアント側で公開鍵を生成する。
サーバー側ではsshd_configの設定を行い、クライアントの公開鍵を設置する。
あとは初回だけ下記のように自身の秘密鍵を指定して接続しにいけばよい。

> ssh -i .ssh/id_rsa ユーザー名@接続先のIPアドレス

2回目以降は通常通りのやり方でパスワードを聞かれずに入れる。

> ssh ユーザー名@接続先のIPアドレス

やり方の詳細は「ターミナルからパスワード入力無しでssh接続する3つの方法 」を参照。

CentOSからWindows ServerへSSH接続

上記でOpenSSHは導入済みとする。
CentOS側はデフォルトで入っているはず。
CentOSで公開鍵を生成し、Windows Serverへ送ってやればよい。

[参考] CentOS7.2→Windows server 2012 R2にSSHで接続する

途中、Permission Deniedに悩まされることもあったが、公式の手順とアクセス権をきちんと見直すことで無事完了。