いつも忘れるのでメモ。
鍵作成
$ cd ~/.ssh/
$ ssh-keygen -t rsa -f hoge_rsa
パスワード入力待ちになるのでパスワード入力。
(入力せずにEnterでパスワードなしの鍵ができるらしいが、自分はいつもつけてます。)
サーバーに鍵を転送
サーバー側に.sshディレクトリをあらかじめ作成しておく。
$ scp ./hoge_rsa.pub user@host:~/.ssh/
サーバー側の鍵設定
$ cd ~
$ chmod 700 .ssh
$ cd .ssh
$ cat hoge_rsa.pub >> authorized_keys
$ chmod 600 authorized_keys
$ rm -fv hoge_rsa.pub
.sshディレクトリとauthorized_keysファイルのパーミッションを正しく設定しないとつながらないので注意。
これでハマること多し。
サーバー側sshd設定変更
$ su
パスワード:
# vi /etc/ssh/sshd_config
以下の行のコメントをはずして有効化する。
#RSAAuthentication yes
#PubkeyAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys
参考:追加の設定
PermitRootLogin
noに設定するとrootログインを禁止にできる。
PasswordAuthentication
noに設定するとパスワードログインを禁止にできる。
設定を間違って、鍵認証できない状態でパスワードログイン禁止にしてしまうとログインできなくなってしまうので、後から変更したほうが良い。
sshd再起動
再起動して設定を反映。
# which sshd
/usr/sbin/sshd
# /usr/sbin/sshd -t
(設定ファイルに間違いがなければ何も表示されない)
# service sshd restart
serviceはCentOSの場合。
他のディストリビューションの場合は違うかも。
クライアントからログイン確認
初回のみ-iオプションで秘密鍵の指定が必要。
$ ssh -i ~/.ssh/hoge_rsa user@host
エイリアス設定
クライアント側の~/.ssh/configを設定することで user@host の部分を省略できる。
これは鍵認証と直接関係ないが、やっておくと便利。
$ vi ~/.ssh/config
Host hoge-server
HostName xxx.xxx.xxx.xxx
User hoge
IdentityFile ~/.ssh/hoge_rsa
$ chmod 600 ~/.ssh/config
$ ssh hoge-server
#参考URL
鍵交換方式によるssh接続
SSHで公開鍵認証を使う
~/.ssh/config で簡単に複数ホストへのSSH接続を管理する