Overview
permissionの設定など、いろいろと落とし穴があるので、sshの設定を覚書きしておく。
ログイン元 (UbuntuやMacなど)
準備
$ sudo apt-get install openssh-client
鍵ファイルの作成
$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/(username)/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
~/.ssh/configの設定
$ vim ~/.ssh/config
Host hoge
HostName hoge.local
User harold
Port 22
Protocol 2
IdentityFile ~/.ssh/id_rsa
ServerAliveInterval 60
haroldはご自分のuser名に変更のこと。
また、Port名や鍵が違う場合も変更のこと。
Permissionの設定 (重要)
$ ssh ...
Permission denied (publickey.gssapi-keyex, gsapi-with-mic).
みたいなのが出る場合は、以下が必要です。
$ chmod 0700 ~/.ssh
$ chmod 0600 ~/.ssh/id_rsa
$ chmod 0600 ~/.ssh/id_rsa.pub
試してみる
下のログイン先での鍵の設定が完了しないと、RSAでの認証はできません。
$ ssh -i ~/.ssh/id_rsa harold@hoge.local -p 22
$ ssh hoge
上の2つは同じことです。
hoge.localでloginするには、avahiなどのinstallが必要です。
鍵の転送
$ scp ~/.ssh/id_rsa.pub harold@hoge.local:
$ ssh hoge
hoge側で:
$ mv id_rsa.pub ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
ログインしたい先 (Raspberry Piなど)の設定
sshでloginしたい先のmachineにおいて、
$ sudo apt-get install openssh-server
Raspberry Pi2/3用Ubuntu Mate 15.10とかには最初からもちろん入っていますけど、一応基本からということで。
sshd_configの設定
sshでloginしたい先のmachineにおいて、
$ sudo vi /etc/ssh/sshd_config
必要ならばport番号変更しましょう
Port 22
rootのログインを非許可にする
下はRSA鍵によるloginのみにする. noneはそもそも非許可にする
PermitRootLogin none
または
PermitRootLogin without-password
なぜかwithout-passwordにしないと、RSA鍵によるloginができないことも
(Raspberry Pi3 with Ubuntu Mateで確認...)
Ubuntu 16.04では
PermitRootLogin prohibit-password
でよい
RSAv1を非許可 (v2のみ許可)
#RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys
passwordによるloginの非許可
PasswordAuthentication no
Permissionの設定 (重要)
$ chmod 0700 ~/.ssh
$ chmod 0600 ~/.ssh/authorized_keys
なお、このauthorized_keysは、上でlogin元で生成したid_rsa.pubを入れていくことで、loginできる形になります (複数必要な場合は単純追記でokです)
firewallの設定とsshdの再起動
$ sudo ufw allow 22
$ sudo ufw enable
$ /etc/rc.d/init.d/sshd restart
または
$ sudo service ssh restart