sshの公開鍵認証の設定でつまずいた

belltail.jpはさくらVPSで稼働してて、普段はsshで管理してます。
自宅以外にも拠点ができたので、外からごにょごにょいじれるようにしたかった。
やることはキーを生成してauthorized_keysに追加するだけなんだけど。なんか1時間くらい格闘しちゃったのでメモ。

つまずいた、っていうのは、具体的には、一通り設定したと思ったのに、入ろうとしたら

Agent admitted failure to sign using the key.
Permission denied (publickey).

と言われたこと。
次の設定手順をちゃんと踏んだら解決しました。

クライアント側

最初はクライアント上で公開鍵と非公開鍵のペアを生成。

 % ssh-keygen -t rsa
 

で、よろしく設定。保存先はデフォルト(~/.ssh/)でいいし、パスフレーズは適切に。空でも可。パスワードとは違うよ。でもあとで使うよ。

次に、生成された~/.ssh/id_rsa.pubをサーバに転送します。
今はまだサーバのsshd設定はパスワード認証になってるはずですので、普通にscpなどで送りましょう。

% scp ~/.ssh/id_rsa.pub (username)@(hostname):~/.ssh/

送ったらサーバ側で少し設定が必要ですがいったんおいといて。

で、これをしてなくて躓きまくった。

% ssh-add ~/.ssh/id_rsa

ここでさっき入力したパスフレーズを入れます。

これでクライアント側の設定は終わり。

サーバ側

まずバーチャルコンソールなりパスワード認証でのsshなりでサーバ側に入ります。
それで、/etc/ssh/sshd_configを編集します。

sshでルートに入れる状態はあんましよろしくないでしょう。
なので、次の行を変更(なければ追記)します。

PermitRootLogin no

入れるユーザは基本的に一人だけにしとくといいと思います。
なので、次の行を追記します。

AllowUsers (username)

公開鍵認証で入れるようにしようって話なので(セキュリティ的にもそれが望ましい)、次の行を追記します。

PasswordAuthentication no

これでsshd関連の設定はOKと思います。

で、次はクライアントの公開鍵を登録します。

% cd ~/.ssh
% cat id_rsa.pub >> authorized_keys
% rm id_rsa.pub       //もういらない

このid_rsa.pubがクライアントからscpした公開鍵で、authorized_keysが接続を受け入れる鍵の一覧です。

これで設定が全部終わったので、

# /etc/init.d/ssh restart

適用します。

これで、クライアントからsshを実行すると(パスワードなしで)入れるようになると思います。

ところで、「つまずいた」であって「つまづいた」では無いのですね…。。

6 thoughts on “sshの公開鍵認証の設定でつまずいた

  1. さくらVPSにsshログインできずに右往左往していましたが、この記事を読んでssh-addが必要であることを知り、無事解決しました。

    別の環境からはssh-addしなくても(実行した覚えがありません)何故かsshログインできていたんですよ。なので、ssh-addというコマンとがあること自体を知りませんでした。

    助かりました。ありがとうございます。

  2. ありがとうございます。
    私の、ssh-addすることにより、パスワードログインを行うことが出来ました。
    5台PCがあるのですが、1台だけできなかったんですよね。
    他のPCではssh-addをした記憶がないのですが。
    ひょっとしたら、クライアント側でssh-keygenをすれば、ssh-addは不要なのでしょうか。
    とにかく解決したので助かりました。

  3. 助かりました。CentOS7.0です。

    最初はssh-addコマンドは不要だったのですが、新しい秘密鍵で古い秘密鍵を置き換えるときに、このコマンドが必要になるのかも、と推測しています。

コメントを残す

メールアドレスが公開されることはありません。