ssh接続を公開鍵認証にする - Naohiro2g/Raspberry-Pi-Projects GitHub Wiki
前提
- Macからの接続(ローカル)
- Raspbian Stretchへの接続(リモート)
- パスワード認証によるローカル〜リモート間SSH接続が出来ている
- WindowsでもGit-bashをつかって、あとは同じ手順でオッケー。
さらに、リモートホスト名をhostname001とし、名前解決によりhostname001.localでアクセスできる前提。
ローカル(Mac)で鍵ペアを作成する。
ssh-keygen -t rsa
~/.ssh/に作成される。 秘密鍵:id_rsa 公開鍵:id_rsa.pub
リモート(ラズパイ)に公開鍵を転送/登録
ssh-copy-id [email protected]
後述のエイリアス設定をしている場合は、.localが不要になったりするので注意。
.sshディレクトリ(存在しない場合は作成)とその中にauthorized_keysファイルが作成され、公開鍵id_rsa.pubが中に収容される。
同じ鍵を送ろうとすると、すでにありますと言って何もしない。別の鍵を送ると追記してくれる。素晴らしい。
公開鍵登録後、すぐに鍵による接続が可能になる。
パスワード認証を廃止したり、ルートログインを禁止したり、する? リモートでのファイル編集。
sudo nano /etc/ssh/sshd_config
パスワード認証廃止。
PasswordAuthentication no
ルートでログインできなくする。
PermitRootLogin no
デフォルトでyesだが、公開鍵認証を可能にする。
PubkeyAuthentication yes
エイリアスで接続できるようにする
ssh関連コマンドで使われる他、Transmit5などのアプリでも使われる場合があるので、注意。
通常のコマンド行
ssh [email protected]
エイリアス利用の場合
ssh itrobot001
nano .ssh/config
CheckHostIP no
User pi
Port 22
IdentityFile ~/.ssh/id_rsa
Host itrobot*
HostName %h.local
Host primbell*
HostName %h.local
Host nao2g-server
HostName %h.local
CheckHostIP no known_hostsにIPアドレスを書き込まなくなる。IPアドレスが変わった時の面倒がなくなる。
User pi コマンド行でユーザー名を省略できる。
Port 22 コマンド行でポート番号を省略できる。22以外の番号にしている時など便利。
Host コマンド行のホスト名でフィルタリング。
Hostname ホスト名を指定する。
%h コマンド行で指定したホスト名が使われる。