エンジニアいちねんせい

「エンジニアはブログを書け」という先人の教えにならってブログをはじめてみたよ

MACとLinux間でのSSH公開鍵認証の設定

MACLinux(ラズパイ)の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のホスト名変えたんですけどそれが原因だったりするんですか??(多分そう)
鍵を作り直して登録後、再度試したら繋がりました。不用意にホスト名を変えるのはやめよう。。

という感じで公開鍵認証の設定でした。いえーい。