Windows10に標準搭載のOpenSSHクライアントで接続ログを記録する方法

Windows10に標準搭載のOpenSSHクライアントで接続ログを記録する方法

Windows10では「April 2018 Update」でSSHにネイティブで対応しました。これで、SSHサーバへ接続するためにSSHクライアントソフト(Puttyなど)をインストールする必要がなくなりました。

ただ、ネイティブのOpenSSHクライアントを使った場合、そのままではSSH接続のログを記録することができません。

そこでここでは、PowerShellスクリプトを使って、ssh接続時に自動でログを記録する方法を紹介します。

Windows10に標準搭載されたSSHコマンドの基本的な使い方
ここでは、Windows10に標準搭載されたsshコマンドを利用して、リモートサーバーへ接続する手順や、鍵ファイルの生成手順などを紹介します。

動作環境

この記事は、以下の環境で実行した結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

項目
製品Windows10 Pro 64bit
バージョン1803(April 2018 Update)

手順

スクリプト実行ポリシーの変更

PowerShellは、セキュリティ上の理由でスクリプトの実行ポリシー(どのような条件でスクリプトを実行するか)がデフォルトで「Restricted(すべてのスクリプトを実行しない)」に設定されています。

以下で紹介するスクリプトファイルを実行できるようにするため、実行ポリシーを事前に「RemoteSigned」に変更しておきます。

管理者権限でPowerShellを起動して、以下のコマンドを実行します。

PS> Set-ExecutionPolicy RemoteSigned

ログ記録付きSSH接続スクリプトの作成

SSH接続時にログを自動で記録するために、以下のようなスクリプトファイル(ps1ファイル)を作成します。

#自身のパスを取得
$scriptPath = $MyInvocation.MyCommand.Path
$LogFolder = Split-Path -Parent $scriptPath

#日時を取得
$TimeStamp = (Get-Date -Format 'yyyyMMdd-HHmmss')

#ログファイルのフルパスを生成
$LogFilePath = $LogFolder + '\PS_' + $TimeStamp + '.log'

#ログファイルを指定してログの記録を開始
Start-Transcript -Path $LogFilePath -Append

#SSH接続開始
ssh tarou@192.168.1.200

スクリプトファイルの名前は、接続先がわかるようたとえば「192.168.1.200.ps1」などとして保存します。

あとは、このPowerShellスクリプトファイルを実行すれば、スクリプトファイルと同じ場所にログファイルが生成され、SSH接続開始以降のログを記録してくれます。SSH接続終了時は、自動的にスクリプトが終了してログの記録も終了します。

Memo

この方法では、viコマンドでテキストファイルを編集した内容などは記録できません。

あとがき

完全な操作ログとはいきませんが、Windowsネイティブツールだけでもこれぐらいはできそうです。PuttyなどのSSHクライアントソフトが導入できない環境では役立ちそうです。

記事が役立ったらシェアしてくれるとうれしいです。

あなたにおすすめのコンテンツ