MACとLinux間でのSSH公開鍵認証の設定
MACとLinux(ラズパイ)のSSH接続を公開鍵認証に変えたので備忘録として書いときます。ユーザー名とかアドレスとか環境によって変わるとこはXXXにしてます。何かの参考にするときは適宜読み替えて!
Mac側での設定
$mkdir /Users/XXX/.ssh
まずホームディレクトリに.sshフォルダを作成。MACだと/homeじゃなくて/Usersなので気をつけて~
$ssh-keygen -t rsa
表示に従ってEnter,Enter,Enterで鍵作成。
(/Users/XXX/.sshにパスフレーズなしで鍵作成)
秘密鍵(id_rsa)と公開鍵(id_rsa.pub)が作成されます。.pubは多分パブリックの意。ファイル名似てるけど取り違えるとえらいことになるので注意。
$chmod 700 /Users/XXX/.ssh
$chmod 600 /Users/XXX/.ssh/id_rsa
パーミッション変更。セキュリティ的に設定変更すべきだし、変更しないと繋がらないこともあるっぽい
$scp /Users/XXX/.ssh/id_rsa.pub pi@XXX.XXX.XXX.XX:/home/XXX/.ssh
*SCPはSSH接続でファイル転送するのでこの時点ではLinuxのパスワード認証の許可は残しておく
Linux側での設定
$mkdir /home/XXX/.ssh
$touch authorized_keys /home/XXX/.ssh/
*ホームディレクトリ直下の,sshディレクトリはSCPでファイル転送する前に作っておく
$cat /home/XXX/.ssh/id_rsa.pub >> /home/XXX/.ssh/id_rsa.pub
authorized_keysに送ってきた公開鍵の情報を追加。
$chmod 700 /home/XXX/.ssh
$chmod 600 /home/XXX/.ssh/authorized_keys
パーミッションの設定。MAC側と同じく。
SSHの設定変更
$cd /etc/ssh
$sudo cp sshd_config sshd_config.bk
まずsshd_config(設定ファイル)のバックアップを作っておく。
$sudo vi /etc/ssh/sshd_config
設定ファイルを書き換え。(行数は僕の環境での行なので参考程度にしてね!だいたいそんくらいの位置なんだなくらいで)
PubkeyAutentication yes (37行目)
AuthorizedKeysFIle .ssh/authorized_keys(40行目)
PasswordAuthentication no(58行目)
PermitEnptyPasswords no(60行目)
ChallengeResponseAutentication no(64行目)
UsePAM no(87行目)
公開鍵認証を使うし、authorized_keysは.ssh/authorized_keysを読みに行くし、パスワード認証はしないし、パスワードなしなんて認めないし、チャレンジレスポンス認証もPAMも認めないよという設定。変更が終わったら保存して再起動。
そしてMAC側でSSH接続を行えば繋がる!はず!はずなんだけど僕は一回ここでPermission denied(publickey)というエラーが出ました。
ググると以下が原因である様子。
1.間違った鍵で接続しようとしている
2.ユーザー名やホスト名が間違ってる
鍵は作りたてホヤホヤだから間違ってないけど、そういえば鍵作った後にMACのホスト名変えたんですけどそれが原因だったりするんですか??(多分そう)
鍵を作り直して登録後、再度試したら繋がりました。不用意にホスト名を変えるのはやめよう。。
という感じで公開鍵認証の設定でした。いえーい。