CentOSの初期設定
サクラのVPSを結構放置してしまったのでどうしたもんかと思っていたんですが(当時はdebian squeeze)、この際CentOSにしようかと思って、OSの再インストール、諸々の設定等を自分のメモ程度に残す。
サーバサイド
サクラのVPSコントロールパネルを使用します。
まずは、ユーザの作成。rootのままじゃマズイですよね。
なには無くともsshですよね。
$ adduser ユーザ名 $ passwd ユーザ名
ここで、パスワードの入力要求が2回来るので、正しく入力する。
とりあえず、さっき作ったユーザになります。
$su - ユーザ名 passwd:
これでさっき作ったユーザになれました。
次に、ホームディレクトリに.sshというディレクトリをつくり、そこで鍵を管理します。
さらに、パーミッションは、自分だけ書き込みが出来るように、700にします。
$mkdir ~/.ssh $chmod 700 ~/.ssh
ここまで、来たらいったんクライアント側の作業。
クライアントサイド
- mac (macbookair OSX 10.6.8)
キーの生成(ない場合のみ)
ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/Users/ユーザ名/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /Users/ユーザ名/.ssh/id_rsa. Your public key has been saved in /Users/ユーザ名/.ssh/id_rsa.pub. The key fingerprint is: e9:b0:d4:6f:c5:b0:eb:e1:58:67:d3:45:99:40:37:ea ユーザ名@ユーザ名-MacBook-Air.local The key's randomart image is: +--[ RSA 2048]----+ | .o o | | + +| | . . o.| | . . +. . | | o S . oE .| | . + . o . . | | . . * + . | | * + . | | . o | +-----------------+ $ ls ~/.ssh id_rsa id_rsa.pub known_hosts
これでsshのキーが生成されました。
各キーの説明
ファイル名 | 種類 | 内容 |
---|---|---|
id_rsa.pub | 公開鍵 | RSA 公開鍵。サーバー側に置く。 |
id_rsa.ppk | 秘密鍵 | RSA 秘密鍵。WinSCP や PuTTYgen で利用。 |
id_rsa | 秘密鍵 | OpenSSH 用 RSA 秘密鍵。TeraTerm などで利用。 |
次に、作ったキーをサーバに転送します。
WindowsだとWinSCPとかFFFTPなんでしょうが、macなのでターミナル上でやります。
サーバに置くので、RSAの公開鍵を転送します。
scp -P 22 ./id_rsa.pub ユーザ名@サーバのアドレス:~/.ssh/authorized_keys
あとで、catとかリネームするのが面倒なので、コマンド一発でsshのデフォルトのポートを指定して転送しています。(ーPオプション)
複数のクライアントからアクセスした場合は、authorized_keysにcat(連結)していけばOKです。
$ cat 追加したい公開鍵ファイル >> authorized_keys
ここで再度サーバ側で設定をします。
先程転送した公開鍵のパーミッションを600にして、自分のみ書き込み可能にします。
先程は、.sshというディレクトリだったので700でした。これを600としてしまうと、cdできなくなるので注意しましょう。⇐自分
$ chmod 600 ~/.ssh/authorized_keys
これで、sshでログイン出来る環境が手に入ったので、ログインしてみます。
$ ssh サーバのアドレス -p 22 -l 先程作成したユーザ名
sshで初回ログインする際に、
The authenticity of host 'sshsvr (192.168.0.1)' can't be established.
RSA key fingerprint is 28:d2:80:56:a3:3c:bf:5b:58:f6:68:97:7d:7d:68:db.
Are you sure you want to continue connecting (yes/no)?
みたいなメッセージがでます。このメッセージは、リモートホストの SSH v2 用 RSA 公開鍵(/etc/ssh/ssh_host_rsa_key.pub)をクライアントの ~/.ssh/known_host ファイルへ登録するかどうかを確認するメッセージです。yes を入力すると、以下のようにリモートホストの SSH v2 用 RSA 公開鍵が、クライアントの ~/.ssh/known_host ファイルに登録されます。
初見だけど、ほんとにそこで大丈夫?みたいなことでしょうかね。
これで、sshでログイン出来ました。
次に、sshの設定を少し変えます。
どのように変更するか?
- ポート番号の変更
- パスワード認証をやめる
- 空のパスワードを受け付けない
- rootでのログインを受け付けない
です。
実際に、やってみましょう。
sshの設定ファイルの場所は、/etc/ssh/sshd_configにあります。
現在、一般ユーザでログインしているので、rootになります。
$su - passwd: # # vi /etc/ssh/sshd_config
それでは、順次変更箇所を書き換えていきます。
Port xxxx PermitRootLogin no PasswordAuthentication no PermitEmptyPasswords no
上記の項目をnoにします。
また、port番号は変更しなくてもしてもいいんじゃないでしょうか?
port番号は、必ず変更しましょう。
保存しましょう。
viの保存のコマンドは:(コロン)wqです。
保存が成功したら、sshデーモンを再起動します。
# service sshd restart Stopping sshd: [ OK ] Starting sshd: [ OK ]
この時点で、sshのログインが出来るか確認をとってみましょう。
サーバにログインしているターミナルはそのままにして、新しいターミナルを開いてアクセル出来るかためしてみます。
これは、設定ファイルを間違えて設定してしまった場合、すぐにサーバのターミナルで編集できるようにする為です。
確認できたら、次にすすみます。
次にyumのアップデートをします。
yumはCentOSのパッケージ管理ツールです。
これで、システムにソフトウェアをインストールしたり、システムをアップデートしたりします。
コマンドは、次の通りです。
# yum upgrade
インストールの途中で実行の確認を求められるので、y(es)をタイプする。
また、GPGのキーをインポートするかと聞かれるので、これも y(es) と答えて Enter。
「GnuPG」(GNU Privacy Guard)という暗号化ソフトで生成される公開鍵です。Linuxの場合,apt-getコマンドやyumコマンドを使ってインターネットから入手できるパッケージが正しい配布先のものかどうかのチェックなどに利用しています。 GnuPGは,「RFC4880」(OpenPGP Message Format)で定義されたOpenPGPに完全準拠しています。OpenPGPは,公開鍵暗号ソフト「PGP(Pretty Good Privacy)」のバージョン 5.xを参考にして作られた規格です。 GnuPGは,公開鍵方式を採用しているため,対になる秘密鍵が存在します。前述したLinuxのパッケージ・チェックでは,パッケージを配布するコミュニティがこの秘密鍵を使ってパッケージ内の署名を暗号化します。パッケージを入手する側は,GPGキーを使って署名を復号化し,パッケージが正しいかどうかを確認します。 なおチェックを実行するには,GPGキーを入手してあらかじめインストールしておきます。GPGキーのインストールには,「rpm --import」コマンドや「apt-key add」コマンドを使います。
なにか、yumでインストールしてます。ここはvimでしょ、ということでインストールします。
$ yum -y install vim-enhanced
問題ないですね。
参考サイト様
2012/06/03 追記
おそらくポート番号を変えてしまい、ログイン出来なくなってしまう方がいらっしゃるかもです。
(自分もこの状況になりました)
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
そこで、以下のような点をチェックしてみて下さい。
- ユーザーのホームディレクトリのパーミッションは適切か(700など).
- ~/.ssh ディレクトリのパーミッションは適切か(700など).
- 秘密鍵のパーミッションは適切か(600など).
- puttyで作ったopenssh形式に公開鍵は変換("ssh-keygen -i -f Puttyで作った公開鍵 > openssh形式の公開鍵")しないといけない.
また、鍵の名前をid_rsa,id_dsa, id_ecdsa名前以外にしている方。
デフォルトでは、上記の名前しか読みに行かないらしいです。
なので、(/etc/ssh/ssh_config)にIdentityFileプロパティを追加しないといけないようです。
IdentityFile ~/.ssh/id_hogehoge
とかですね。
参考サイト様:SSHの鍵交換でPermission denied