1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

公開鍵を用いたssh接続

Posted at

#はじめに
理屈をちゃんと理解していないからよく忘れて、何度も調べるパスワードなしのssh接続。

この投稿は、過去に諸先輩方がアップしてくれた分かりやすいサイトの内容を、自分が把握しやすいように再構成しただけです。
先輩の皆様ありがとうございます。

#やりたいこと
ssh.png

一台のマシンから複数台のマシン/さまざまなOSにssh接続するとき、パスワードを打ち込まないでアクセスしたい。
単純なログインの簡略化ではなく、リモートコマンドを実行することを念頭に、公開鍵を利用した接続手順をまとめる。

今回想定している構成は以下。
【接続元】

マシン IPアドレス
Linux(CentOS) 192.168.10.100

【接続先】

マシン IPアドレス
Linux(CentOS) 192.168.10.101
VMware ESXi 192.168.10.200
Windows 10 Pro 192.168.10.201

#1. 接続元で秘密鍵と公開鍵を生成
接続元のサーバで、秘密鍵と公開鍵のペアを作成し、公開鍵を接続先に渡す。基本はこれだけ。

なので、まず接続元のサーバにログインして鍵のペアを作る。
rootユーザで接続元Linuxにログインする。そして以下のコマンドで鍵を生成する。rsaで鍵を作る場合は特に指定は必要ない。

# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx root@hostname

keyの保管先ファイルとパスフレーズを設定するよう求められる。
鍵のできる場所はデフォルトの/root/.ssh/id_rsaでいいので、単純にEnterキーを押す。
のちのち自動化処理に使いたいので、パスフレーズは空で。単純にEnterキーを押す。

鍵が生成されたことを確認する。

# cd .ssh
# ls
id_rsa  id_rsa.pub  known_hosts

秘密鍵:id_rsa公開鍵:id_rsa.pubができている。

#2. 接続先設定:Linux編
まず、Linux(CentOS 7)の場合の手順。接続先Linuxサーバのsshdが有効になっていることが前提。
##公開鍵の配布
接続元で作った公開鍵を接続先Linuxに渡す。
key-scp.png

鍵の受け渡しには、scpを使った。もちろんこの段階では公開鍵を使った設定をしていないのでパスワードを入力する。

接続元で実行
# scp /root/.ssh/id_rsa.pub root@192.168.10.101:/root/

接続先のLinuxにrootでログインして、受け渡した公開鍵を.ssh/authorized_keysに追記する。

接続先で実行
# mkdir .ssh
# chmod 700 .ssh
# cat id_rsa.pub >> .ssh/authorized_keys
# rm id_rsa.pub

sshd設定変更とサービスの再起動

接続先のsshd_configを一部修正する。

接続先で実行
# vi /etc/ssh/sshd_config

公開鍵認証に関する一か所だけ変更する。実際には先頭に#がついてるのを外すだけ。

接続先で実行
PubkeyAuthentication yes

書き換えたら、サービスを再起動する。

# systemctl restart sshd

これで、接続元Linuxから接続先Linuxへのsshアクセスの際に、パスワードを聞かれずに接続できる。

#3. 接続先設定:VMware ESXi編
次に、VMware ESXi 6.7 update 3の場合の設定。

ESXiのsshdサービスの有効化

ESXiのsshdサービスはデフォルトで無効化されているので、これを有効化する。

  • ブラウザを開き、対象のESXiにアクセスする。
  • ホスト>管理>サービスを開く。
  • TSM-SSHを選択し、アクションをクリック。
  • ポリシーを選択し、ホストと連動して起動および停止しますを選ぶ。
  • TSM-SSHを選択したままにして、起動ボタンをクリックする。

これでsshdサービスは立ち上がり、次回以降ESXiを再起動した際もsshdサービスが上がってくる。

公開鍵の配布

接続元で作った公開鍵を接続先ESXiに渡す。ここでもscpで渡す。

sh:接続元で実行
# scp /root/.ssh/id_rsa.pub root@192.168.10.200:/

接続先のESXiにrootでsshログインして、受け渡した公開鍵を/etc/ssh/keys-root/authorized_keysに追記する。

接続先(ESXi)で実行
~] cat id_rsa.pub >> /etc/ssh/keys-root/authorized_keys

ESXiはサービスの再起動は必要ない。これで終わり。

#4. 接続先設定:Windows 10 Pro
##機能の追加
Windows 10 バージョン1803以降であれば、sshdサービスを追加できる。追加方法は以下の通り。

  • スタートメニューを右クリック>設定をクリック。
  • Windowsの設定>アプリをクリック。
  • アプリと機能にあるオプション機能をクリック。
  • 機能の追加をクリック。
  • OpenSSHサーバーを選択し、インストールボタンが表示されるのでクリック。
  • 画面右上の×ボタンで閉じる。

##Windows 10 Proのsshdサービスの有効化
インストールしただけではサービスが有効化されていないので、以下の方法で有効化する。

  • 検索ボックスに「サービス」と入力して検索。サービス画面を開く。
  • サービス名:OpenSSH SSH Serverを探し、プロパティを開く。
  • スタートアップの種類:自動を選択し、適用ボタンとOKボタンをクリック。

##公開鍵の配布
接続元で作った公開鍵をこれまたscpを使って接続先のWindows 10に渡す。
なおWindows 10上のユーザー名はTechとする。

接続元で実行
# scp /root/.ssh/id_rsa.pub Tech@192.168.10.201:/

これでWindows 10に公開鍵がコピーできたので、今度はWindows 10側で操作する。
PowerShellを開き、受取った公開鍵をユーザーのホームは以下にある.ssh/authorized_keysに書き込む。

接続先(Windows10)で実行
> mkdir .ssh
> cat C:\id_rsa.pub >> .ssh/authorized_keys

##sshdサービスの設定変更とサービスの再起動

設定ファイルは、C:\ProgramData\ssh\sshd_conf。最初、どこにあるか探してしまった。。。
このファイルの中で、1か所コメントを外して、2か所コメント化する。
具体的には公開鍵認証を有効化する設定と、AuthorizedKeyのファイルはローカルの配下にあるものだけを使う設定。

オリジナル
#PubkeyAuthentication yes
(省略)
Match Group administrators
       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

変更後
PubkeyAuthentication yes
(省略)
#Match Group administrators
#       AuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keys

この後、sshdサービスを再起動する。

これでWindowsにもパスワードなしでssh接続ができるようになった。

#参考にしたサイト
https://qiita.com/Tanaaaaan/items/50c3f0ddc15c40b750d2
https://sig9.hatenablog.com/entry/2015/05/27/185218
http://ttm.jimba.ddo.jp/adiary.cgi/teraterm/0147
https://www.atmarkit.co.jp/ait/articles/1903/28/news005.html

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?