Windows 間でSSH 通信を行う

Windows 間でSSH 通信を行うための手順

現在 OpenSSHクライアントとOpenSSH サーバー機能はデフォルトで利用可能です。

Windows起動に連動してOpenSSHクライアントとOpenSSH サーバーを起動させたいなら
[サービス]で「OpenSSH Authentication Agent」と
「OpenSSH SSH Server」のスタートアップの種類を「自動」、若しくは「自動(遅延開始)」に設定する必要があります。

コマンドプロンプトで相手側コンピューターに接続を試みる

相手側コンピューターのユーザー名とIアドレスかホスト名(コンピューター名)、ログインパスワードが判っているのが前提となります。

ssh 相手側ユーザー名@相手側コンピュータ名

フィンガープリントの受け入れを聞いてくるので yes → Enter

パスワードを聞いてくるのでパスワード入力 → Enter で、接続先のユーザーディレクトリに切り替わったら、パスワード認証による接続は OK

この時点で接続元コンピューターのユーザーフォルダに .ssh フォルダが作成され、中に ホスト情報が記述された known_hosts ファイルが作成られます。

これらを接続し合うコンピューターすべてで行います。

公開鍵認証の設定

これにより面倒なパスワード入力が省略できるようになります。

一連の作業はコマンドプロンプトか PowerShell で行います。

id_rsa(秘密キー)とid_rsa.pub(公開キー)の作成

下記コマンドでid_rsa(秘密キー)とid_rsa.pub(公開キー)が作成されます。

ssh-keygen

下記のようにキーファイルの作成場所のパスが表示されます。

C:\/Users/ユーザー名/id_rsa

接続するコンピューターが1台だけならそのままEnterで構わないが複数のコンピューターと接続したいなら、
自分のコンピューターだと識別しやすい固有のキーファイル名にしたほうが無難です。

任意のファイル名を含めたパスを入力してEnter。

C:\/Users/ユーザー名/pc1_rsa

上の例だとC:\/Users/ユーザー名/.ssh/ にpc1_rsaとpc1_rsa_pub というファイルが作成されます。

.sshディレクトリに移動

cd .ssh

中身を確認します。

dir

pc1_rsa(秘密キー) と pc1_rsa.pub(公開キー) が作成されていることを確認したらキーエージェントに秘密キーを追加します。

ssh-add pc1_rsa

これらの操作を接続し合うコンピューターすべてで行います。

接続先コンピューターに pc1_rsa.pub を転送

scp pc1_rsa.pub ユーザー名@コンピューター名:.ssh

接続先コンピューター側で届いている id_rsa.pub の中身を authorized_keys に追加。

type pc1_rsa.pub >> authorized_keys

authorized_keys が存在しない場合、自動的に作成されます。

接続の簡略化

接続を試みる側の C:\Users/ユーザー名/.ssh/ に下記内容の config ファイルを置きます。

Host pc2 // (接続名(任意))
HostName コンピューター2 // (接続先のコンピューター名)
User pc2 // (接続先のユーザー名)
Port 22 // (接続に使用するポート番号)
IdentityFile ~/.ssh/pc1_rsa // (接続を試みる側の秘密キーまでのパス)

これで次回から下記コマンドで接続することができます。

ssh pc2

既存の秘密キーから公開キーを作成

誤って公開キーを削除してしまった時などは秘密キーを基に公開キーを作り直すことができます。

ssh-keygen -y -f pc1_rsa > pc1_rsa.pub