公開鍵でのログイン設定について

このQ&Aのポイント
  • さくらのVPSサーバでの公開鍵利用についての設定手順と問題
  • 公開鍵を利用したログインの設定における注意点と問題の解決方法
  • 公開鍵認証のログイン設定に関する問題と解決方法についての説明
回答を見る
  • ベストアンサー

公開鍵でのログイン設定について

さくらのVPSサーバの設定をしています。 公開鍵を利用したログインの設定を、以下の手順で行いました。 ・PuTTY Key Generatorで鍵ペアの作成  SSH-2 RSA(1024byte)パスフレーズ付き ・private kyeをローカルに保存して、PuTTYで読み込みファイルとして設定 ・publick keyを ~/.ssh/authorized_keys へ保存 ・/etc/ssh/sshd_configを設定(以下、有効な行を抜き出します) Port 22 Protocol 2 ServerKeyBits 1024 SyslogFacility AUTHPRIV PermitRootLogin no RSAAuthentication yes PasswordAuthentication no PermitEmptyPasswords no ChallengeResponseAuthentication no GSSAPIAuthentication yes GSSAPICleanupCredentials yes UsePAM yes AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT AcceptEnv LC_IDENTIFICATION LC_ALL X11Forwarding yes Subsystem sftp /usr/libexec/openssh/sftp-server 上記でログイン時にパスフレーズを求められるので、 公開鍵方式でログインできているのだと思うのですが いろいろなサイトを見て、以下の行のコメントを外す必要があるんじゃないかと思っています。 #PubkeyAuthentication yes #AuthorizedKeysFile ~/.ssh/authorized_keys ただ、この2行を有効にするとログインできず、Server refused our keyと表示されてしまいます。 公開鍵の認証をコメントアウトして、鍵の場所すら設定していないのに 公開鍵でログインできるものなのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • astronaut
  • ベストアンサー率58% (303/516)
回答No.1

# man sshd_config によると、その2行のデフォルト値は  PubkeyAuthentication yes  AuthorizedKeysFile .ssh/authorized_keys となっています。(AuthorizedKeysFile は、ユーザーのホームディレクトリからの相対パス)。 なので、これらの行がコメントアウトされている状態で公開鍵認証でログインできるのは正常な動作です。で、コメントアウトされていない状態でログインできないのは・・・? "~/" が余計なのかな?

ma0564
質問者

お礼

ありがとうございます! コメントアウトをとって AuthorizedKeysFileの「~/」も削除したら正常にログインできました! そもそもがデフォルト値だったんですね。 長いこと悶々としていたので、スッキリしました。 これを機にmanコマンドもっと使用してみます。

関連するQ&A

  • [VPS] 公開鍵認証を設定できません

    閲覧ありがとうございます さくらVPSを借契約して色々と試しているのですが 公開鍵認証の設定ができずに困っています どこが抜けて、あるいは間違えているのか教えてください VPSのOSは"ubuntu 14.04" clientのOSは"windows7"です ssh_config で設定を以下のように変更 ssh 12345 PermitRootLogin no PubkeyAuthentication yes UsePAM no PasswordAuthentication yes #失敗した時のために"yes"にしています .ssh ディレクトリを作成 $mkdir .ssh $chmod 700 .ssh client側でPuTTYを使い公開鍵と秘密鍵を作成 公開鍵をOpenSSHに変換し、VPSに送信 公開鍵を登録、パーミッションの変更 $cat xxx.pub >> $HOME/.ssh/authorized_keys $sudo chmod 600 authorized_keys ユーザーのパーミッションの変更 $chmod 755 /home/user ファイアーウォールは"ufw"で設定しています 変更したsshポートは許可しているので問題はないはずです 公開鍵の登録にコピペをしたいですが、できないため回りくどい方法になっています 何をしても設定ができないようであれば、長いPWを設定して使おうと考えていますが 大丈夫でしょうか?

  • SSHの公開鍵の使い方

    以前から、WinXPマシンに OpenSSH for Windows をインストし、それを通してリモートデスクトップをしていました。SSHクライアントは、PuTTYです。 SSHには公開鍵を使ってログインを制御すると良いといろいろなサイトで見かけるので、公開鍵を PuTTYgen で作成後に、OpenSSH 付属の ssh-keygen.exe で変換して鍵を作りました。そのあと、cmd で copy /b 鍵.pub > authorized_keys を実行しました。 #このとき、authorized_keysのコピーがうまくいって #なかったようなので、ノートパッドで、中身をコピー #しました。 しかし、鍵付きでアクセスしようとすると鍵を拒否され、しかも、鍵なしのWindowsログオンパスでログインできてしまいます。 どのようにしたら、鍵付きでログインできて且つ、ログイン制限をできますか? それと、おまけに聞きたいことがあるのですが、sshd_config のPermitRootLogin は no にした方がいいのでしょうか? #Linux風に行けば、したほうが断然いいのですが、 #Winだと、rootなんてないし・・・

  • 複数人にSSHの秘密鍵と公開鍵を設定

    VPSを借りてまして、CentOS6.2です。 fooユーザとbarユーザとhogeユーザに、SSHの秘密鍵と公開鍵を設定するにはどうすれば可能(あるいはすべき)なのでしょうか? ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/Users/sorai/.ssh/id_rsa): // ファイル作成場所 Enter passphrase (empty for no passphrase): // パスフレーズを入力する Enter same passphrase again: // パスフレーズをもう一度入力する というのを、その人数分行わないとできないでしょうか?あるいはそうすべきでしょうか? 今、/root/.ssh/authorized_keysを /home/miya/.ssh/autauthorized_keysにコピーして、rootのとき成功した秘密鍵で、 miyaアカウントでSSHログインしようとしてもだめでした。 (ただ、パーミッションやユーザownerをどうすべきかわかりません) よろしくお願い申し上げます。

  • SSHでの公開鍵認証接続時のログイン画面

    CentOSクライアントからのCentOSサーバへ公開鍵認証によるSSH接続をしたいと思っています。公開鍵認証なのでパスワードではなくパスフレーズでの認証ができるようにしたいです。 しかし、設定操作を一通りやってクライアントからサーバへログインしようとすると添付画像のとおり「パスワード」と書かれたログイン画面が出てきます。 一応パスフレーズとして設定した文字列を入力しないとログインできないようにはなってるのですが、これはちゃんと公開鍵認証ができるようになっているのでしょうか。また、ログイン時に入力した文字列はパスワードではなくパスフレーズとして登録されているのでしょうか。 以下、環境/前提条件および操作手順の詳細です。 ■環境/前提条件 ・OSは両方ともCentOS6.5 ・OpenSSHのバージョンは両方とも5.3 ・仮にサーバ側のホスト名をtestserver、その中にあるユーザー名をtest1とする ■操作手順 (1)クライアント側でssh-keygenでid_rsaとid_rsa.pubをローカルに作成し、パスフレーズを登録。 (2)サーバ側で  .ssh/authorized_keysを作成し、   chmod 700 .ssh  chmod 600 .ssh/authorized_keys  を実行 (3)クライアント側で以下のコマンドを打ち公開鍵ファイルをサーバへ転送  cat .ssh/id_rsa.pub |ssh test1@testserver 'cat >>  .ssh/authorized_keys' (4)両マシーン共再起動させた後、クライアントからサーバへ   ssh test1@testserver  でログインしようとしたら添付画像が出てきた。 パスワード欄にはtest1@testserverのパスワードではなく、(1)で登録したパスフレーズを入力しないとログインできないようになっているが、 このログイン画面に書かれてるのがパスフレーズではなくパスワードとなっているのが気がかりです(パスフレーズとして認識されていない?) これはちゃんと公開鍵認証ができるようになっているのでしょうか。また、ログイン時に入力した文字列はパスワードではなくパスフレーズとして登録されているのでしょうか。 目標が達成できていなければ、問題点および解決策を教えてくださいますようお願いします。

  • authorized_keysに追加済の公開鍵をauthorized_keysから削除する方法?

    リモートサーバの.sshフォルダ内のauthorized_keysに追加した公開鍵が不必要になった場合、この鍵をauthorized_keysから削除するにはどのようにすればよいのでしょうか? 鍵の追加は,catコマンドを使用するのは分かりますが、 例)cat putty.pub >> $HOME/.ssh/authorized_keys 鍵の削除はどのようなコマンドを使用するのか分かりません。 注意: このスレッドでは、authorized_keysにcat putty.pub ファイルの内容を追加後、不必要となったcat putty.pub ファイルの削除の仕方を聞いているのではありません。このスレッドでお聞きしているのは、既にauthorized_keysに追加済みの複数の公開鍵の内、特定の鍵のみをauthorized_keysから削除する方法をお聞きしています。 よろしくお願いします。

  • sftpのパスワードなしでログイン

    sftpのパスワードなしで自動化をしたいと考えています。 シェル内で他の処理をして、その後sftpで他のサーバーへコピー(put)します。 シェル内にsftpの起動する内容を記載するのですが、どうしてもパスワードを聞かれてしまいます。 調べてみるとSSH公開鍵認証を使用してパスワードなしのログインが出来るとありました。 試してみたのですが、どうしてもうまくログインできません。 原因と対応策を教えて頂けませんでしょうか。 OS:AIX5.3 おこなった作業は以下です。 サーバー側(ファイルを受ける側) 1、ユーザーのホームディレクトリ上でssh-keygen -t rsa を実行 2、.sshにid_rsa、id_rsa.pubができるので、id_rsa.pubをauthorized_keysへ変更する。 3、authorized_keysをクライアントに送る。 4、id_rsa、authorized_keysのアクセス権を600にする。 5、sshd.confgを編集 <編集箇所> RSAAuthentication yes   →コメントアウト PubkeyAuthentication yes  →コメントアウト AuthorizedKeyFile .ssh/authorized_keys  →コメントアウト PasswordAuthentication no →コメントアウト、yesをnoに変更 PermitEmptyPasswords yes →コメントアウト、noをyesに変更 ChallengeResponseAuthentication no →コメントアウト、yesをnoに変更 6、保存してsshdを再起動 クライアント側(ファイルを送る側) 1、ホームディレクトリの.sshにauthorized_keysを配置する。 2、authorized_keysのアクセス権を600にする。 3、sshdを再起動 以上の作業の後にクライアントからsftpでログインしようとすると、 以下のメッセージが出てしまいます。 sshも同様です。 (ログインしてホームディレクトリにいるとします) $ sftp -i ./ssh/authorized_keys ユーザー名@ホスト名 Enter passphrase for key '.ssh/authorized_keys': Permission denied (publickey). Connection closed $ ssh -i .ssh/authorized_keys ユーザー名@ホスト名 Enter passphrase for key '.ssh/authorized_keys': Permission denied (publickey).

  • sftp時の公開鍵認証

    windowsサーバにSFTPサーバを構築し、公開鍵での認証をかけ、SFTPでファイルやり取りを行いたいのですが、 ファイルやり取りはできるのですが、公開鍵での認証がうまくいきません。 色々なサイトを調べながら以下手順で構築していったのですが、 公開鍵、秘密鍵での認証がうまくいってないように見えます。 なんでもいいので、何か分かる方いましたらご教授お願いします。 ※クライアントPC、サーバともにwindows ◆秘密鍵、公開鍵ファイルの作成(クライアントPC) 1.クライアントPCにSFTP接続ソフト「WinSCP」をインストール 2.「WinSCP」の補助ツール「PuTTYgen」により、秘密鍵ファイル、公開鍵ファイルを作成 3.作成した公開鍵ファイルをサーバへコピー ◆SFTPサーバ構築、公開鍵認証設定(サーバ) 4.サーバにSFTP環境構築ソフト「freeFTPd」をインストール 5.SFTPの接続先(アドレス、ポート22)を設定 6.ユーザー(ID、パスワード)を作成。そのユーザーのSFTP時ホームディレクトリを設定 7.SFTPのサービスを開始 8.6で設定したホームディレクトリの直下に「.ssh」ディレクトリ作成 9.「.ssh」ディレクトリの直下に「authorized_keys」ファイルを作成 10.3でコピーした公開鍵ファイルの中身を、「authorized_keys」ファイルに追加(テキストベースでのコピペ) ◆サーバへのSFTP接続(クライアントPC) 11.クライアントPCで「WinSCP」を起動。SFTPサーバのIP、6で設定したユーザーのID、2で作成した秘密鍵を設定しログイン 12.「Further authentication required Authenticating with public key "dsa-key-20140512" Access denied.」 と表示され、ログインできない 13.秘密鍵を使わず6で設定したユーザーIDとパスワードであれば、ログイン可能。SFTPサーバとのファイルのやり取りも可能 また、「.ssh」ディレクトリと「authorized_keys」ファイルに書き込み権限があるユーザーの場合に、認証が失敗するという情報があったので、 クライアントPCに書き込み権限を持っていないユーザーでログインし、WinSCPを起動してアクセスしてみたのですが、同じ結果でした。

  • sshの公開鍵暗号方式について

    今linuxのfedora3でsshのログインをパスワードではなくて公開鍵に変更しようとしています。 rootでssh-keygenによって鍵を作り、rootの/root/.ssh/authorized_keysに鍵を登録すると上手くいき公開鍵暗号方式でのログインができるようになりました。 しかし、rootでないtestというユーザで鍵を作り、/root/.ssh/authorized_keysに鍵を登録してもtestは公開鍵によるログインにならずパスワードによるログインのままでした。試しに/home/test/.ssh/authorized_keysを作って鍵を登録してみたのですが、変化なしです。どこが悪いのでしょう?root以外での公開鍵暗号方式が上手くいきません。 長くなってすみませんが、誰か教えてくれませんか?

  • SFTPをパスフレーズなしで認証できない

    仕事で急きょWindowsServer2008にSFTPサーバを構築し、Linuxサーバから公開鍵認証(パスフレーズなし)で接続しなければいけなくなりました。 copSSHでSFTPサーバの構築は完了し、WinSCPでは鍵認証まで確認できたのですが、Linuxサーバからパスフレーズなしでの公開会議認証がうまくできません。 いろいろなサイトを参考に試しているのですがうまくいきません・・・。 急ぎと言うこともあり非常に困っています。 以下は自分でやった内容メモです。 どなたかお分かりの方がいらっしゃいましたらご教授お願い致します。 ▼作業メモ 1)WIndowsServer2008(サーバ側)にcopSSHをインストール 2)C:\Program Files (x86)\ICW\etc\sshd_configの設定変更 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys TCPKeepAlive yes を有効にする RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys を有効にする(yes/noも上記のとおり変更) PasswordAuthentication no PermitEmptyPasswords yes ChallengeResponseAuthentication no を有効にする(yes/noも上記のとおり変更) 3)Linuxサーバ(クライアント側)で鍵作成 ※パスフレーズなしで作成  $ cd ~/.ssh/  $ ssh-keygen -t dsa 4)サーバ側で、公開鍵を/home/.ssh/authorized_keysとしてコピー 5)クライアント側で、SFTPコマンドを実行  →しかし、下記のとおり失敗。  $sftp -oPort=10022 -oIdentityFile=/home/work/id_dsa sftpUser@192.168.xxx.xxx  Connecting to 192.168.xxx.xxx...   Connection closed

  • 鍵交換方式のsshでアクセスするための設定について

    鍵交換方式のsshでアクセスするために、puttygen.exeというプログラムを使用して、秘密鍵と公開鍵を作成しました。 公開鍵はOpenSSHでは使用できないので、Linuxでssh-keygenコマンドを使用して使用可能な形式に変換しました。 それを$HOME/.ssh/authorized_keysというファイルに追加するため、 cat putty.pub >> $HOME/.ssh/authorized_keys を実行したところ、 -bash: cd: /home/.ssh: そのようなファイルやディレクトリはありません とでてしまいました。 root からとユーザログイン状態で、cd /home とし、ls -a としましたが、.ssh というディレクトリはないようです。 /home/.ssh/authorized_keys というファイルがあるはずなんですよね。。 どなたか教えて下さい。