自宅以外にも拠点ができたので、外からごにょごにょいじれるようにしたかった。
やることはキーを生成して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を実行すると(パスワードなしで)入れるようになると思います。
ところで、「つまずいた」であって「つまづいた」では無いのですね…。。
ありがとうございます。私もssh-add ではまりました。
debian系です。
僕のVPS鯖もDebian Squeezeでした,お役に立てたようで大変光栄です!
さくらVPSにsshログインできずに右往左往していましたが、この記事を読んでssh-addが必要であることを知り、無事解決しました。
別の環境からはssh-addしなくても(実行した覚えがありません)何故かsshログインできていたんですよ。なので、ssh-addというコマンとがあること自体を知りませんでした。
助かりました。ありがとうございます。
ありがとうございます。
私の、ssh-addすることにより、パスワードログインを行うことが出来ました。
5台PCがあるのですが、1台だけできなかったんですよね。
他のPCではssh-addをした記憶がないのですが。
ひょっとしたら、クライアント側でssh-keygenをすれば、ssh-addは不要なのでしょうか。
とにかく解決したので助かりました。
助かりました。ありがとうございました。
助かりました。CentOS7.0です。
最初はssh-addコマンドは不要だったのですが、新しい秘密鍵で古い秘密鍵を置き換えるときに、このコマンドが必要になるのかも、と推測しています。