• ベストアンサー
  • すぐに回答を!

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

共感・応援の気持ちを伝えよう!

  • 回答数8
  • 閲覧数1852
  • ありがとう数2

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

  • ベストアンサー
  • 回答No.8

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

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

すみません。さっきのログ違いますね。 キー認証に関しては、こちらだと思います。 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 は自分ユーザーネーム

質問者からの補足

レスが遅くなりごめんなさい。 参考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.

関連するQ&A

  • 鍵交換方式の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 というファイルがあるはずなんですよね。。 どなたか教えて下さい。

  • sshでログインするパスワードの変更

    WindowsからlinuxにputtyやWinSCPでsshでアクセスしています。 linuxには、公開鍵を置いています。  /home/hogehoge/.ssh/authorized_keys2 Windowsには、秘密鍵を置いています。 鍵は、puttygen.exeで作りました。 この場合、パスワードを変更する場合は、もういちどputtygen.exeで公開鍵と秘密鍵を作り直して ssh-keygenを実行しないといけないのでしょうか? 簡単にパスワードだけを変更できるのでしょうか? すみません、linuxはあまり詳しくないです。 環境 linux: SuSE 9 Windows7(64bit)

  • CentOSでSSH公開鍵認証ができません。ログの場所はどこでしょうか?

    puttyからCentOS4.1のサーバーへ公開鍵認証による SSH接続ができません。 http://nekhet.ddo.jp/item/771 の通り設定したのですが・・ サーバーの/home/test/.ssh/authorized_keys にputtyで作成した公開鍵をちゃんと登録しています。 しかし、SSHでログインIDを入力すると、 login as: test Authenticating with public key "XXXXXXXXXX" とならず、ログインIDを入力した時点でputtyが 落ちてしまいます。原因を調べたいのですが ログのありかはどこでしょうか?

その他の回答 (7)

  • 回答No.7
  • word
  • ベストアンサー率0% (0/2)

> WindowsXP HomeEdition %userprofile% のプロパティの「共有」タブの「ローカルでの共有とセキュリティ」の所の「このフォルダをプライベートにする」にチェックを入れてみるとどうなるでしょうか。(これでは厳しすぎるかもしれませんし、甘すぎるかもしれません。) あるいは、cacls.exe を使うなりセーフモードで起動するなりすればアクセス権限は設定できると思います。

共感・感謝の気持ちを伝えよう!

  • 回答No.6
  • word
  • ベストアンサー率0% (0/2)

OpenSSH for Windows は使ったことがないので以下はあくまでいいかげんな推測です。 1. authorized_keys そのもの及びそれを置いてある親ディレクトリ及びその親及びその親…(以下再帰的に一番上まで)のアクセス権限はどう設定されていますか。UNIX での経験では当該ユーザと root 以外のユーザが書き込みできるようになっていると公開鍵認証は行われないようです。 2. authorized_keys を置く場所は %userprofile%\.ssh\ でいいのですか。OpenSSH をインストールしたディレクトリ\home\ユーザ名\.ssh\ に置かなければいけなかったりしませんか。

共感・感謝の気持ちを伝えよう!

質問者からの補足

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 と入れないと認識してくれないんです。

  • 回答No.5

まず、sshd をデバッグモードで動かした状態でPuTTYからログインし、どんなエラーメッセージが出るか見てください。 sshd -d -d -d とかやって起動すると詳しいメッセージが出ます。 それから、ログイン制限ですが、sshd.config を修正します。 PasswordAuthentication no これで、鍵無しだとログインできません。

共感・感謝の気持ちを伝えよう!

質問者からの補足

レスありがとうございます。 OpenSSHdのデバッグモードとはどのようにすればいいのでしょうか? WindowsのサービスとしてOpensshdというのはありましたが、サービスが呼び出す実行可能ファイルが、cygrunsrv.exeというファイルにリンクしていまして、それに、-d -d -d オプションをつけてみたのですが、無効なオプションといわれました。 >これで、鍵無しだとログインできません。 ユーザーネームを入れた瞬間に、PuTTYがいきなり終了してしまい、鍵付きでユーザーネームを入れたときは、"server refuses our key"と出てPuTTYが終了しましたから、このオプションはちゃんと動いていますね。

  • 回答No.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の手習い」より

共感・感謝の気持ちを伝えよう!

質問者からの補足

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

  • 回答No.3

すみません訂正です。 >・・・・・・・・・・・・・・・・・・ >一行の長い文字列が出来ています。これを1号機へ持ってゆきます。 >  > 1号機の「cd ~/.ssh」に入って >  cat id_rsa.pub>>authorized_keys を実行しました。  一号へ持って行ったファイル名は   id_rsa.pub です。   失礼いたしました。

共感・感謝の気持ちを伝えよう!

  • 回答No.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のみ・・

共感・感謝の気持ちを伝えよう!

質問者からの補足

レスありがとうございます。 ソフト上に表示されている鍵のコピペでやってみましたが、やはり、拒否されました。

  • 回答No.1
  • anmochi
  • ベストアンサー率65% (1332/2045)

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版を触った事が無いのでぐだぐだになってしまった。何か参考になれば・・・・。

共感・感謝の気持ちを伝えよう!

質問者からの補足

レスが遅くなりすみません。 鍵の変換法を、紹介してもらった通りに行ったのですが、やはり、拒否されてしまいました。 そして、PasswordAuthentication no にすると、Username を入力直後に、PuTTYが落ちました(T T

関連するQ&A

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

    さくらの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と表示されてしまいます。 公開鍵の認証をコメントアウトして、鍵の場所すら設定していないのに 公開鍵でログインできるものなのでしょうか?

  • 公開鍵の管理

    現在,sshサーバを管理しているのですが, ユーザそれぞれの公開鍵を/home/user_name/.ssh/authorized_keysに保存しています. ユーザが秘密鍵をなくしてしまったりした場合にかってに対応する公開鍵を交換されたくないので, どこかのディレクトリで一括に管理したいのですが,可能でしょうか? よろしくお願いします.

  • 外出先ホストからでも容易にSSH公開鍵アクセスできるようにするには

    RedHat9(host1)─WAN─RedHat9(host2) | WAN | Solaris2.6 としています。 host2で [user01@host2]$ ssh-keygen -t dsa [user01@host2]$ ssh-keygen -t rsa [user01@host2]$ ssh-keygen -t rsa1 [user01@host2]$cat ~/.ssh/id_dsa.pub >> ~/authorized_keys [user01@host2]$cat ~/.ssh/id_rsa.pub >> ~/authorized_keys [user01@host2]$cat ~/.ssh/identity.pub >> ~/authorized_keys [user01@host1]$ scp -P 60001 user01@host2:~/authorized_keys ~/.ssh/ [user01@host1]$ ls -l ~/.ssh/authorized_keys -rw------- 1 user01 user01 1179 1月 8 11:17 /home/user01/.ssh/authorized_keys [user01@host1]$ ls -alF ~/ | grep ssh drwx------ 2 user01 user01 4096 12月 23 13:06 .ssh/ として [user01@host2]$ ssh -l user01 host1 -p 60001 Enter passphrase for key '/home/user01/.ssh/id_rsa': となり、アクセスできました。 続いて、 [hoge@solaris]$ scp -P 60001 user01@host2:~/.ssh/* ./.ssh/ として host2の公開鍵、秘密鍵をコピーしました。 そして、 [hoge@solaris]$ ssh -l user01 host1 -p 60001 としてみましたら、 「Permission denied」 となってアクセス出来ません。 どうすればアクセス出来るようになるのでしょうか?

  • SSHの公開鍵について

    お世話になっております。 現在3台のサーバA,B,Cがあり、AのサーバからB,Cにパスワードなしでログインできるようにするため、 AのサーバでSSHの公開鍵と秘密鍵を作成しました。(パスフレーズはnull) 具体的な手順は以下になります。 ------------------------------------------------------------------------------------------- 1. Aサーバにて公開鍵と秘密鍵を作成 A # ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (//.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in //.ssh/id_rsa. Your public key has been saved in //.ssh/id_rsa.pub. The key fingerprint is: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx root@A 2. 秘密鍵、公開鍵が作成されていることを確認 A # ls ~/.ssh id_rsa id_rsa.pub known_hosts 3. 公開鍵をBとCサーバへ配信 A # scp ~/.ssh/id_rsa.pub root@B:/tmp Password: id_rsa.pub 100% |***************************************| 223 00:00 4. BとCサーバ側で公開鍵の登録 B # cat /tmp/id_rsa.pub > ~/.ssh/authorized_keys ------------------------------------------------------------------------------------------- 登録後、AサーバからB,CサーバにSSHで接続してみたのですが、一見パスワードなしでログインできているようでした。 ただ、何故か B,Cサーバや無関係なDサーバからもAサーバへパスワードなしでアクセスできてしまいます。 公開鍵を登録したのはB,Cサーバのみで、B,CサーバからAサーバに対してパスワードなしでアクセスできないはずという認識です。 更に、数日後AサーバからB,Cサーバに接続を試みたところ、以下のメッセージが出力されました。 ------------------------------------------------------------------------------------------- ホスト 'B (1.1.1.1)' の認証を確立できません. RSA 鍵フィンガープリントは xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx です 本当に接続を継続してもよろしいですか (yes/no)? ------------------------------------------------------------------------------------------- 公開鍵はBサーバ初回接続時にknown_hostsへ登録済みで、Bサーバ側のIPアドレスの変更なども実施していません。 SSHの仕様で、公開鍵が数日で変更されるのでしょうか? 上記について、アドバイスや問題点があればご教示いただければ幸いです。

  • 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から削除する方法をお聞きしています。 よろしくお願いします。

  • 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以外での公開鍵暗号方式が上手くいきません。 長くなってすみませんが、誰か教えてくれませんか?

  • RedHatでDSA公開鍵認証ができません。。

    RedHatEL4.0で下記手順で公開鍵を置いても ServerAからServerBへのログインが、 パスワード認証となってしまいます(><) 1.ServerA,ServerBで、 同じ名前のユーザーを作りパスワードを設定しました。 2.ServerAでの作業 #ssh-keygen -t dsa #scp id_dsa.pub hoge@serverB:/home/hoge/.ssh/authorized_keys #ssh hoge@ServerB #known_hostに関してのプロンプトに、yesで答える ここで、公開鍵をServerBに設置したので、 パスワードなしでログイン完了!と期待していたのですが、 hogeユーザーのパスワード入力が聞かれてしまいます。。 原因は何でしょうか? 又、公開鍵認証でパスワードなしでログインするには、 同一ユーザー同一グループである必要があるのでしょうか?

  • 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)で登録したパスフレーズを入力しないとログインできないようになっているが、 このログイン画面に書かれてるのがパスフレーズではなくパスワードとなっているのが気がかりです(パスフレーズとして認識されていない?) これはちゃんと公開鍵認証ができるようになっているのでしょうか。また、ログイン時に入力した文字列はパスワードではなくパスフレーズとして登録されているのでしょうか。 目標が達成できていなければ、問題点および解決策を教えてくださいますようお願いします。

  • 複数人に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をどうすべきかわかりません) よろしくお願い申し上げます。

  • [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を設定して使おうと考えていますが 大丈夫でしょうか?