元経理マンが27歳でエンジニアに転向してからのメモ集

元経理マンがエンジニアに転向して現在

Ruspberry pi 3 b+でssh公開鍵認証を設定する。

購入からssh接続まで

購入したラズパイのキット https://www.amazon.co.jp/gp/product/B07DLVW23C/ref=oh_aui_detailpage_o05_s00?ie=UTF8&psc=1

OS(raspbian)は最初からプリインストールされているのでそのまま組み立てて接続。

キーボードの日本語入力などの初期設定を済ませる。

ipアドレスを固定する。

[pi]~$ sudo vi /etc/dhcpcd.conf
(略)

interface wlan0
static ip_address=192.168.0.XXX          // 固定したいipアドレスを入力
static routers=192.168.0.1               // ルーターのipアドレスを入力
static domain_name_servers=192.168.0.1   // 同上

macのターミナル上からssh接続ができればOK

[mac]~$  ssh pi@192.168.0.XXX

※ラズパイのIDとPASSの初期値はpi raspberryなので、パスワードは$ sudo passwd変更しておく。

公開鍵認証接続の設定

mac上で鍵の生成

[mac]~$ ssh-keygen -t rsa

パスフレーズを設定する。
※既に鍵がある人は省略。

これでmac上に公開鍵と秘密鍵が生成される。

公開鍵をラズパイに設置。

[mac]~$ scp -P [port番号] ~/.ssh/id_rsa.pub pi@192.168.0.XXX:
 pi@192.168.0.XXX's password:
 id_rsa.pub                                        100%  401   152.5KB/s   00:00

※[port番号]はラズパイ上の~/etc/ssh/sshd_configで設定されているポート番号
※ポート番号は初期設定で22番なのだが、ロボット対策のために変更しておく。

これを実行するとラズパイのホームディレクトリ上に鍵が置かれる。

鍵を別の場所に保管して、パーミッションを変える。

[pi]~$ ls
id_rsa.pub  python_games  ダウンロード  テンプレート  デスクトップ  ドキュメント  ビデオ  音楽  画像  公開

[pi]~$ mkdir .ssh

[pi]~$  cat id_rsa.pub >> ~/.ssh/authorized_keys

[pi]~$  ls
id_rsa.pub  python_games  ダウンロード  テンプレート  デスクトップ  ドキュメント  ビデオ  音楽  画像  公開

[pi]~$  rm id_rsa.pub

[pi]~$  ls
python_games  ダウンロード  テンプレート  デスクトップ  ドキュメント  ビデオ  音楽  画像  公開

[pi]~$  ls -la
drwxr-xr-x  2 pi   pi   4096  8月  5 17:19 .ssh

[pi]~$ chmod 700 .ssh
[pi]~$ chmod 600 ~/.ssh/authorized_keys

[pi]~$  ls -la | grep .ssh
drwx------  2 pi   pi   4096  8月  5 17:19 .ssh

[pi]~$  ls -la ~/.ssh | grep authorized_keys
-rw-------  1 pi pi  401  8月  5 17:19 authorized_keys

sshd_configの設定

  • ポート番号の変更(事前に変更している場合は省略)
  • rootログインの禁止(初期設定でnoになっている)
  • パスワード認証の禁止
  • 空のパスワード禁止
  • 公開鍵認証の設定
Port   XXXXX    // 数字を変更
 (略)
PermitRootLogin no       // 「#」外してyes → no
 (略)
PubkeyAuthentication yes                 // 追記
RSAAuthentication    yes                 // 追記
AuthorizedKeysFile   %h/.ssh/authorized_keys                 // 追記
(略)
PasswordAuthentication no        // 「#」外してyes → no
PermitEmptyPasswords no       // 「#」外してyes → no

設定情報を更新する。

[pi]~$ sudo /etc/init.d/ssh restart

sshで接続

[mac]~$ ssh -i .ssh/id_rsa -p [port番号] pi@192.168.0.XXX

Enter passphrase for key '~/.ssh/id_rsa':
Linux raspberrypi 4.14.34-v7+ #1110 SMP Mon Apr 16 15:18:51 BST 2018 armv7l

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Aug  5 17:32:46 2018 from 192.168.0.YYY

[pi]~ $              // 成功

おまけ

毎回同じように打つのがめんどくさいので、configに情報を登録しておくと、便利

[mac]~$ vi .ssh/config

~~~~~~~~~~~~~~~~~~~~~~~~
Host [ホスト名]
    HostName 192.168.XX.XX
    User pi
    Port [ポート番号]
    IdentityFile ~/.ssh/id_rsa
~~~~~~~~~~~~~~~~~~~~~~~~

これで次回から[ホスト名]のみでアクセスできる。

[mac]~$ ssh [ホスト名]

おまけ②

ラズパイのviがうまく機能しない(上下左右キーがABCDとなる)ので.vimrcを設定したが sshd_configをいじるときだけ同じだったので、 chmodで666に変更してテキストエディタで編集した。

おまけ③

  • ポート番号の変更の効果 vagrantcentOSからラズパイにログインできるかやってみる。
[vagrant@localhost ~]$ ssh pi@192.168.0.XXX
ssh: connect to host 192.168.0.XXX port 22: Connection refused
  • 公開鍵認証の効果
[vagrant@localhost ~]$ ssh pi@192.168.0.XXX -p [ポート番号]
The authenticity of host '[192.168.0.XXX]:~~~~~ ([192.168.0.XXX]:~~~~~)' can't be established.
ECDSA key fingerprint is ***************************
ECDSA key fingerprint is ***************************
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.0.XXX]:~~~~~~' (ECDSA) to the list of known hosts.
Permission denied (publickey).