Windows10でのSSHの設定


はじめに

環境

  • ローカルマシン
    • Windows10
    • PowerShell
  • リモートマシン
    • Linux

手順

ローカルマシンでの作業

1. "ssh-keygen"コマンドで4096ビットRSA暗号の公開鍵・秘密鍵を生成。

  • "-t"オプションで暗号の種類を示す。下の例はRSA暗号。
  • "-b"オプションでビット数を示す。下の例は4096ビット。
  • "-C"オプションの後はコメントを示す。メールアドレスなどを書くとよいかも。
ssh-keygen -t rsa -b 4096 -C "[コメント]"

2. パスフレーズの入力を求められる。

Enter file in which to save the key (C:\Users\[Windows10のユーザ名]/.ssh/id_rsa): [Type a passphrase]

3. 再度、パスフレーズの入力を求められる。

  • 2.で入力したパスフレーズを入力
Enter passphrase (empty for no passphrase): [Type a passphrase]

4. 公開鍵と秘密鍵を確認

  • ホームディレクトリ下の.ssh/ディレクトリに移動。
  • .ssh/ディレクトリには先ほど生成した秘密鍵(id_rsa)と公開鍵(id_rsa.pub)がある。
cd ~/.ssh
ls  

5. リモートマシンに公開鍵を転送

  • "scp"コマンドでリモートマシンに公開鍵を転送。
scp id_rsa.pub [リモートマシンのユーザ名]@[リモートマシンのホスト名]:~/.ssh/id_rsa_hoge.pub

リモートマシンでの作業

1. ローカルマシンでリモートマシンにSSHで接続

ssh [リモートマシンのユーザ名]@[リモートマシンのホスト名]

2. SSHの設定ディレクトリに移動

  • Linuxでの"~"はホームディレクトリの意味
cd ~/.ssh

3. ローカルの新しい公開鍵をリモートマシンに登録

  • 転送した公開鍵を"cat"コマンドで表示
  • "autohrized_keys"は接続を許可する公開鍵を登録しておくサーバー側のファイル
  • ">>"はリダイレクションと言い、指定したファイルの末尾に追記する
  • 下の例では"cat"コマンドで公開鍵の中身を表示し、">>"で"authorized_keys"ファイルに追記している。
touch authorized_keys
cat id_rsa_hoge.pub >> authorized_keys

4. "authorized_keys"ファイルのパーミッションを変更

chmod 600 authorized_keys

5. 転送したローカルマシンの公開鍵を削除

rm -fv id_rsa_hoge.pub

再度、ローカルマシンでの作業

1. sshでローカルマシンからリモートマシンに接続

ssh [リモートマシンのユーザ名]@[リモートマシンのホスト名]

2. 接続できたら、OK

ローカルマシンの使い勝手を良くする(エイリアス)

1. Windows10のホームディレクトリ以下の~/.ssh/configを開く

cd ~/.ssh
code config

2. ~/.ssh/configを編集

  • 通常のエイリアス
# ~/.ssh/config
Host remote1                         # エイリアス 
    HostName example1.com            # リモートマシンのホスト名
    User hoge                        # リモートマシンのユーザ名
    Port 22                          # リモートマシンのSSHポート
    IdentityFile ~/.ssh/id_rsa       # セットとなる秘密鍵
  • 踏み台サーバがある場合のエイリアス
# ~/.ssh/config
Host bastion                         # 踏み台のエイリアス 
  HostName example2.com              # リモートマシンのホスト名
  User fuga                          # リモートマシンのユーザ名
  Port 22                            # リモートマシンのSSHポート
  IdentityFile ~/.ssh/id_rsa         # セットとなる秘密鍵

Host remote2                         # エイリアス 
  HostName dst                       # リモートマシンのホスト名
  User fuga                          # リモートマシンのユーザ名
  Port 22                            # リモートマシンのSSHポート
  IdentityFile ~/.ssh/id_rsa         # セットとなる秘密鍵
  ProxyCommand ssh -W %h:%p bastion  # bastion経由でSSHする

3. エイリアスを使って接続

ssh remote1
ssh remote2

終わり

本記事は終了です。

References