徒然なるままに

個人の備忘録を中心としたブログです

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
linuxでssh接続の設定をするためには、
クライアント側に秘密鍵(id_rsa)、サーバ側に公開鍵(authorized_keys)を用意しておかなければならない。

クライアント側に秘密鍵、サーバ側に公開鍵を持たせる理由としてssh接続の流れを簡単に説明すると、

0. クライアントの接続要求。
1. サーバ側で乱数を作成し、その乱数をクライアントの公開鍵で暗号化したものをクライアント側に送信。
2. クライアント側は暗号化された乱数を、自身の秘密鍵で復号し、復号された乱数をもとにハッシュ値を計算して、ハッシュ値をサーバ側に送信。
3. サーバ側でも自身の生成した乱数からハッシュ値を計算し、クライアントから送られてきたハッシュ値と比較して一致すれば以降暗号化通信を行う。

という流れがあるから。

0. SSHサーバー(open-ssh)のインストール
Ubuntu13.04では
sugo apt-get install ssh


1. 公開鍵、秘密鍵の作成
ssh-keygenコマンドを使用する。-tオプションで暗号方法を設定できる。
ssh-keygen -t rsa

で進めていくと、ファイルの保管場所や、パスフレーズを求められるのでこれを入力。
ファイルの保管場所はエンターでデフォルト設定、パスフレーズはエンターで空にすることもできるがセキュリティ上設定したほうがよい。
以上でデフォルトなら、~/.ssh/id_rsa、~/.ssh/id_rsa.pubが作成される。

入力したパスフレーズは直接ssh通信に利用されるものではない。
秘密鍵をファイルに保存するときに暗号化に使われるものであり、
秘密鍵を使うときにはパスフレーズで復号した秘密鍵を使って通信する。

2. 生成した公開鍵をサーバ側に追加する。
id_rsa.pubが公開鍵で、これをサーバ側の~/.ssh/authorized_keysに追加する。
サーバー側で"authorized_keys"がまだ作成されていないようだったら、
scp ~/.ssh/id_rsa.pub [uname]@[server]:~/.ssh/authorized_keys

として丸ごとコピーしてよい。

既にauthorized_keysがあるようなら、他のクライアントの公開鍵が保存されているのを壊してはいけないので、
一度公開鍵ファイルをサーバ側に物理的、あるいは以下のscpなどの手段を使って移してから
scp ~/.ssh/id_rsa.pub [uname]@[server]:~/.ssh/id_rsa.pub

[uname]と[server]は適切なものに変更

サーバ側で
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

を実行してauthorized_keysに公開鍵を追記する。

クライアント側で
ssh [server]

とすると、パスフレーズを求められる。
この際に、ssh-keygenで入力したパスフレーズを入力する。
その後の通信が成功すれば、SSH接続が開始される。

なお、パスフレーズが一致せず、秘密鍵の復号に失敗しSSH接続ができなかった場合、
ログインパスワードを利用した接続を求められる。
これは公開鍵/秘密鍵を利用した通信の方法ではないので、次のプロセスでSSHサーバの設定を変えておくことをおすすめする。

3. sshd_configの設定
/etc/ssh/sshd_configの該当する記述をコメントアウト、および編集。

・PasswordAuthentication no #パスワード方式のログインを禁止(鍵方式でのみログイン許可) 
・PermitRootLogin no #ルートのSSHログインを禁止(ルートでログインされると危険が大きい)
・PermitEmptyPasswords no # 空のパスワード(パスフレーズ)による接続を禁止(セキュリティ上の問題)

設定が終わったら、
sudo service ssh restart

を使って、設定を反映させておきましょう。
スポンサーサイト

kamiyasu

Author:kamiyasu

QR

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。