web-dev-qa-db-ja.com

公開鍵認証を使用してサーバー間でssh接続を確立する方法

継続的インテグレーション(CI)サーバーとテストWebサーバーをセットアップしています。 CIサーバーが公開鍵認証を使用してWebサーバーにアクセスすることを希望します。 Webサーバーでユーザーを作成し、キーを生成しました

Sudo useradd -d /var/www/user -m user
Sudo passwd user
Sudo su user
ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/var/www/user/.ssh/id_rsa):
Created directory '/var/www/user/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /var/www/user/.ssh/id_rsa.
Your public key has been saved in /var/www/user/.ssh/id_rsa.pub.

ただし、CIサーバーはキーをホストにコピーしますが、それでもパスワードを要求します

ssh-copy-id -i ~/.ssh/id_rsa.pub user@webserver-address
user@webserver-address's password:
Now try logging into the machine, with "ssh 'user@webserver-address'", and check in:

.ssh/authorized_keys

to make sure we haven't added extra keys that you weren't expecting.

Webサーバーを確認したところ、CIサーバーの公開鍵がWebサーバーのauthorized_keysにコピーされましたが、接続するとパスワードを要求されます。

  ssh 'user@webserver-address'
  user@webserver-address's password:

作成したユーザーではなくrootユーザーを使用しようとすると(両方のユーザーがコピーされた公開鍵を使用します)。公開鍵に接続します

  ssh 'root@webserver-address'
  Welcome to Ubuntu 11.04 (GNU/Linux 2.6.18-274.7.1.el5.028stab095.1 x86_64)

   * Documentation:  https://help.ubuntu.com/
  Last login: Wed Apr 11 10:21:13 2012 from *******
  root@webserver-address:~#
1
Rafael

あなたの質問は、CIサーバーからWebサーバーにログインしたいと言っています。ただし、Webサーバーでキーを作成したと言います。これが単なる誤解なのか、タイプミスなのかはわかりません。

キーを使用してCIサーバーからWebサーバーにログインできるようにするために必要な作業の概要は次のとおりです。

  1. CIサーバーで公開鍵と秘密鍵のペアを作成します
  2. キーの公開部分(id_rsa.pub)をWebサーバーにコピーして、ログインするユーザーごとに(rootuserなどの~/.ssh/authroized_keysファイルに入れます。 )。私は通常、scpを使用してファイルをサーバーにコピーします。ユーザーごとに使用する複数のキーがある場合は、それらをauthorized_keysに追加します。それ以外の場合、これがそのユーザーの唯一のキーである場合は、id_rsa.pubの名前をauthorized_keysに変更できます。
  3. .sshフォルダーのアクセス許可がchmod 644 .sshで644であり、許可されたキーファイルのアクセス許可がchmod 700 .ssh/authorized_keysで700であることを確認してください。
  4. 公開鍵をコピーしたユーザー名を使用して、CIサーバーからWebサーバーにログインしようとします。 ssh user@webserver

パスワードを要求するべきではありません(これは、sshd構成ファイルに関する@khaledのアドバイスに従っていることを前提としていますが、デフォルトでは通常、パスワードの前にキー認証を許可するように設定されています)。

2
webtoe