こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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なんてないし・・・

投稿日時 - 2005-03-14 13:21:19

QNo.1268584

すぐに回答ほしいです

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

No.5です。
Windowsでsshdを使ったことが無いのであれですが、
$ cygrunsrv -S sshd -d
とかできませんか?
↓のURLをご覧になった方が早いかもしれませんが。

参考URL:http://osksn2.hep.sci.osaka-u.ac.jp/~naga/miscellaneous/winssha.html

投稿日時 - 2005-03-18 15:27:32

補足

レスが遅くなりごめんなさい。

参考URLを読んで、sshdの位置がわかったので、-d -d -dオプションをしたところ、次のように表示を出しました。(サービスを停止した状態です。)

debug2: read_server_config: filename /etc/sshd_config
debug1: sshd version OpenSSH_3.8.1p1
debug3: Not a RSA1 key file /etc/ssh_host_rsa_key.
debug1: read PEM private key done: type RSA
debug1: private host key: #0 type 1 RSA
debug3: Not a RSA1 key file /etc/ssh_host_dsa_key.
debug1: read PEM private key done: type DSA
debug1: private host key: #1 type 2 DSA
debug1: Bind to port 22 on 0.0.0.0.
Server listening on 0.0.0.0 port 22.

投稿日時 - 2005-03-20 13:28:19

お礼

すみません。さっきのログ違いますね。

キー認証に関しては、こちらだと思います。

debug1: trying public key file /home/USER/.ssh/authorized_keys
debug3: secure_filename: checking '/home/USER/.ssh'
debug3: secure_filename: checking '/home/USER'
Authentication refused: bad ownership or modes for directory /home/USER

*USER は自分ユーザーネーム

投稿日時 - 2005-03-20 13:57:53

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(8)

ANo.7

> WindowsXP HomeEdition

%userprofile% のプロパティの「共有」タブの「ローカルでの共有とセキュリティ」の所の「このフォルダをプライベートにする」にチェックを入れてみるとどうなるでしょうか。(これでは厳しすぎるかもしれませんし、甘すぎるかもしれません。)

あるいは、cacls.exe を使うなりセーフモードで起動するなりすればアクセス権限は設定できると思います。

投稿日時 - 2005-03-17 17:42:06

ANo.6

OpenSSH for Windows は使ったことがないので以下はあくまでいいかげんな推測です。

1. authorized_keys そのもの及びそれを置いてある親ディレクトリ及びその親及びその親…(以下再帰的に一番上まで)のアクセス権限はどう設定されていますか。UNIX での経験では当該ユーザと root 以外のユーザが書き込みできるようになっていると公開鍵認証は行われないようです。

2. authorized_keys を置く場所は %userprofile%\.ssh\ でいいのですか。OpenSSH をインストールしたディレクトリ\home\ユーザ名\.ssh\ に置かなければいけなかったりしませんか。

投稿日時 - 2005-03-16 21:21:47

補足

1.WindowsXP HomeEditionを使っていて、ファイルの権限などはないので、多分これかなとは思いますが、確信はまったくありません。

2.authorized_keysの位置ですが、ssh-keygen.exeを使用した際(パッケージについていた、Textドキュメントの鍵認証についてを参考にした際)、ssh-keygen.exeは、%userprofile%\.ssh\ (ルートドライブがc:\だとして、c:\documents and settings\USERNAME\.ssh\) に鍵を作っていて、そこにフォルダがなかった場合はそこに作っていたので、フォルダのパスは問題ないと思います。(やはり確信はないのですが・・・) ただ、ソフトがもともとUnix生まれですから、ソフトは /home/USERNAME/.ssh と入れないと認識してくれないんです。

投稿日時 - 2005-03-17 14:01:31

ANo.5

まず、sshd をデバッグモードで動かした状態でPuTTYからログインし、どんなエラーメッセージが出るか見てください。
sshd -d -d -d とかやって起動すると詳しいメッセージが出ます。

それから、ログイン制限ですが、sshd.config を修正します。
PasswordAuthentication no
これで、鍵無しだとログインできません。

投稿日時 - 2005-03-16 15:42:58

補足

レスありがとうございます。

OpenSSHdのデバッグモードとはどのようにすればいいのでしょうか? WindowsのサービスとしてOpensshdというのはありましたが、サービスが呼び出す実行可能ファイルが、cygrunsrv.exeというファイルにリンクしていまして、それに、-d -d -d オプションをつけてみたのですが、無効なオプションといわれました。

>これで、鍵無しだとログインできません。
ユーザーネームを入れた瞬間に、PuTTYがいきなり終了してしまい、鍵付きでユーザーネームを入れたときは、"server refuses our key"と出てPuTTYが終了しましたから、このオプションはちゃんと動いていますね。

投稿日時 - 2005-03-17 13:42:31

ANo.4

 サーバーへLoginされるユーザーは?

私の場合 続き・・・・
 1号機の登録ユーザー名 A1,A2,A3・・とすると(3名)
 この3名分のフォルダーが「home」のなかに、
 
  home/A1/.ssh
  home/A2/.ssh
  home/A3/.ssh
  
 のように、作りました。そしてこの「.ssh」のなかに
 それぞれの公開鍵ファイル Authorized_keys を登録して
 あります。
 
  当然2号機からのユーザー名 B1,B2 二名分の
  フォルダーも作りました。
  
  以上 私の勉強した範囲で・・・・
  
 あとは 熟練技術者のご回答をお待ちにください。
 
     「60の手習い」より

投稿日時 - 2005-03-15 15:49:04

補足

レスありがとうございます。

使用するユーザーは僕自身のみです。ですから、鍵も当然一人だけ作成し、それを自分のプロファイルフォルダ(%userprofile%\.ssh\) に入れました。

投稿日時 - 2005-03-16 06:33:09

ANo.3

すみません訂正です。

>・・・・・・・・・・・・・・・・・・
>一行の長い文字列が出来ています。これを1号機へ持ってゆきます。
> 
> 1号機の「cd ~/.ssh」に入って
>  cat id_rsa.pub>>authorized_keys を実行しました。

 一号へ持って行ったファイル名は
  id_rsa.pub です。

  失礼いたしました。

投稿日時 - 2005-03-15 11:47:17

ANo.2

私の場合
 環境:1号機 WinXPにCygwinをいれて
    2号機 WinXPにWinSCPをいれて鍵はPuttyで
    
 Puttyで作った鍵の保存方法でハマリました。
 
 2号機でPuttyを作ります。鍵作成の画面で
  「opensshのauthorized_keysファイルにペーストするための公開鍵」
 と表示されている文字の下の枠の中をコピー・ペーストです。
               (秘密鍵はそのまま保存します。)
 枠の中の暗号をコピーして テキストエディターにペーストすると
 一行の長い文字列が出来ています。これを1号機へ持ってゆきます。
 
 1号機の「cd ~/.ssh」に入って
  cat id_rsa.pub>>authorized_keys を実行しました。
  
 次に2号機からWinscpで1号機にLoginします。
  
 すると、パスフレーズを訊かれるようになります。
 それがOKならば パスワードの画面になります。
   
 パスフレーズを訊かれないので おかしいな?と思って
 WinSCPのログファイルを見たら
 「server refused our key」の文字が それで
 ネットで 「erver refused our key、Putty、WinSCP、セキュア、・・・」
 などの文字列を入れて検索してたどり着きました。

  私は今年の初めからCygwin、WinSCP、Puttyを始めたので間違いが
 あるかも・・・「これでトンネルが出来ている。」と思っています。
 
以上Putty-Keyのみ・・

投稿日時 - 2005-03-15 11:33:49

補足

レスありがとうございます。

ソフト上に表示されている鍵のコピペでやってみましたが、やはり、拒否されました。

投稿日時 - 2005-03-15 13:10:43

ANo.1

Windows版は触った事がほとんど無いので良くわからんが・・・・。一応Linux版での知識で回答すると以下のようになる。

変換の仕方はそれで良いのかな? Linuxの場合は
# ssh-keygen -i -f PuttyKey.pub > authorized_keys
とするが、Windowsでもこれが使えるかも知れない。
C:\>ssh-keygen.exe -i -f PuttyKey.pub > authorized_keys

鍵なしのWindowsログオンパスでログインできないようにするには、sshd_configに
PasswordAuthentication no
を設定すると良いかも知れない。

やっぱりWindows版を触った事が無いのでぐだぐだになってしまった。何か参考になれば・・・・。

投稿日時 - 2005-03-14 17:34:06

補足

レスが遅くなりすみません。
鍵の変換法を、紹介してもらった通りに行ったのですが、やはり、拒否されてしまいました。

そして、PasswordAuthentication no にすると、Username を入力直後に、PuTTYが落ちました(T T

投稿日時 - 2005-03-15 13:07:49

あなたにオススメの質問