• ベストアンサー
  • 困ってます

SSHのパスワード無し認証(公開鍵暗号方式)

過去ログに似た質問がいくつかあり、それらを参考にしましたが、何故か私の環境では上手く行かないので、何が原因なのか、どうすればよいのか、どなたか教えて頂けると嬉しく思います。 ■やりたいこと ・SSHでパスワード無しログイン ■環境条件 ・ローカルマシン(接続元)   VineLinux 3.1 ・ホストマシン(接続先)   VineLinux 3.1 ・両方のマシンに同じユーザ(hikaly)があり、ログインパスワードは同じものになっている。 ■手順 ローカルマシンにhikalyでログインし、 $ ssh-keygen -t rsa -N "" でパスフレーズ無しの鍵を作成する。 /home/hikaly/.ssh/id_rsa.pub というファイルを、ホストの /home/hikaly/.ssh/ にコピー。この際、WinSCP3を使って、ローカル→作業用Windowsマシン→ホスト とコピーを行いました。 ホストの /home/hikaly/.ssh/ には authorized_keys が存在しなかったので、コピーした rsa_id.pub を authorized_keys に改名。 ホスト側で root になって sshd_config を編集。 RSAAuthenticationを「yes」にして保存。sshdを再起動させました。 ■結果 これでローカル側からホスト側にパスワード無しで接続できるはずだと思いますが、 hikaly@hostmachine's password: とパスワードを尋ねられてしまいます。 いろいろとググッて調べてみたところ、「接続先(ホスト側)でssh-keygenしてできたrsa_id.pubを接続元(ローカル側)にコピーせよ。」と読める資料を見つけましたが、多くのものは「接続元でssh-keygenして接続先にコピーせよ。」と書かれています。ワケ分からなくなってきました。(;´ρ`) 私の質問もややこしくてワケ分からなくてすいません。

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

  • 回答数9
  • 閲覧数1788
  • ありがとう数14

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

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

リモートのsshdを止めたくないんですね。 オーケー、そんなときは違うポートを使ってテストしよう。リモートで、以下のコマンドでデバッグモードのsshdを立ち上げる。 その前に、使われてないポートのチェックだ。 /etc/servicesによれば 122 は空いてるようだが、netstatを使って確認してみる。 $ netstat -ln LISTEN されてなければOK。 sshd をデバッグモードで起動する。 # /usr/sbin/sshd -D -e -d -d -d -p 122 -f /etc/ssh/sshd_config netstat で見てみると 122 がLISTEN されてる。 こいつがデバッグモードのsshdだ。 さて、ローカルからリモートへsshしてみよう。 $ ssh -p 122 user@remotehost これでばっちりログが取れるので、問題解決まであと少しだっ。 #8 さんが整理してくれたおかげで、やっと問題が理解できました。thx

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

質問者からのお礼

度々どうもありがとうございます! なるほど、デーモンで動いているsshdとは別のsshdを別ポートで待機させて、そこに接続してあげるわけですか。Good idea ですね! …が、ここまで親身に相談に乗って頂いているのに申し訳ないのですが、ホストVineと回線との間にファイアーウォールがありまして、これが一切の不要ポートを塞いでいるのです。 httpを止めて80番ポートを解放して、そこにsshdを待機させようかと考えましたが、さすがにそれはマズイです。なので、せっかく教えて頂いたにも関わらず、最後までテストすることが出来ませんでした。 それと、更に申し上げにくいのですが、実は先ほど、全く別の、とても初歩的な方法で解決してしまいました。 ホストVineとローカルVineにて、~/.ssh 以下のファイルを全部削除。ssh-keygenによる鍵作成も、authorized_keysやknown_hostsへの登録も、全てを一からやり直しました。すると、これまでの挙動不審が嘘のように、あっさりと鍵方式で接続できるではありませんか。何度やっても大丈夫なので、今度こそ…喜んで良いのだと思います。 ただ、解決したことは嬉しいのですが、回答者の皆さんの労力は何だったの?ということになりかねないので、とても複雑な心境です。すいません…。(´・ω・`) せめてお礼を全員に差し上げたいのですが、システム上そうすることもできませんし。どうかお許し下さい。 少々時間をおいて、締め切らせて頂きます。m(__)m

関連するQ&A

  • sshについて

    linux初心者です。いまsshについて勉強しています。ssh-keygenで作った鍵を相手に送りました。ちなみにidentity.pubをauthorized_keysにコピーしてから送りました。それからホストの中の~/.sshにmvでauthorized_keysに入れました。しかしsshを使うとパスワードを聞かれます。パスフレーズではいるにはどうしたらよいですか。

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

  • パスワードなしで ssh のログインを行いたい

    http://www.okweb.ne.jp/kotaeru.php3?q=588282 の続きです いろいろ回答をいただいて問題点が少しはっきりしたので、質問の焦点を絞って再投稿します。 2台の Windows XP の PC に、Cygwinをいれ、OpenSSH サーバをたてています(サービスとして動かす)。  「パスワードなしで ssh のログインを行いたい」 のですが、うまくいきません。設定は、次のように行いました。 (1) クライアントPCで公開鍵をつくる   $ ssh-keygen -t rsa で(パスフレーズを空白にして)公開鍵を作成(identity.pub) (2) ホストPCに鍵をコピーして、   % cat identity.pub >> .ssh/authorized_keys のように、authorized_keys に鍵の内容を追加する。 Linux がホストの場合は、以上の手続きで「パスワードフリー」になったのですが、 Cygwin ではだめです。   $ssh -1 192.168.0.5 1   Permission denied.   $ ssh 192.168.0.5   Permission denied (publickey,keyboard-interactive). のようになって、失敗してしまいます。

その他の回答 (8)

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

確認だが、 1.自宅Win(putty)→ローカルVine 2.自宅Win(putty)→ホストVine の2接続だけであって、 3.ローカルVine→ホストVine の接続は無いんだね? 今まで3をやってると思っていた。  puttyで公開鍵を作ってOpenSSHで使う場合、 a.Winのputty-keygenで「Export OpenSSH Key」を使う。 b.Vineのssh-keygenでインポートする。 の二通りがあるが、どちらを採用しているのかな? 具体的には、Vine側では次の2行のうちどちらを行ったかだ。 $ cat id_rsa.pub >> authorized_keys $ ssh-keygen -i -f id_rsa.pub >> authorized_keys 今までの話の流れからすると、前者のようだけど、その場合、putty-keygenで鍵を作り直した方が早いかもしれない。私としては、putty-keygenでOpenSSH公開鍵を作るよりも、putty用(?)の公開鍵を作ってOpenSSHでインポートする手順の方がお勧めだ。 ところで、#7さんへのお礼に > この最後の「RSA key~」の後に止まってしまいます。 > プロンプトに戻りません。 > 10分ほど待ちましたが反応がないので、[ctrl]+[C]で抜け出しました。 とあるが、これはプロンプトに戻らないのが正しい。その状態で、別のコンソールや別のKTermやWinのputtyからssh接続してみてごらんと#7さんはおっしゃっている。

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

質問者からのお礼

複雑な環境を分かりにくく説明してしまって申し訳ありません。 本来の目的は、ローカルVine→ホストVineの公開鍵&パスワード入力無しログインです。 ローカルVineで $ ssh-keygen -t rsa -N "" として鍵を作成。念のため、-t rsa1 と -t dsa も実行。出来上がった三つの公開鍵をホストVineにコピーして $ cd ~/.ssh $ cat identity.pub >> authorized_keys $ cat id_rsa.pub >> authorized_keys $ cat id_dsa.pub >> authorized_keys と行って登録しました。 しかし、ローカルVineからホストVineにログインしようとすると、いつもLinuxのログインパスワードを求められてしまいます。 そこで、Windows上のputtygen.exeで鍵を作成し、ローカルVineとホストVineの両方のauthorized_keysに登録して、両者の動作の違いを確認してみることにしました。すると、ホストVineは相変わらずパスワード入力を求めてくるのに対し、ローカルVineには鍵だけですんなりと入れたのです。 つまり、 1.自宅Win(putty)→ローカルVine 2.自宅Win(putty)→ホストVine 3.ローカルVine→ホストVine の三つとも行いました。 3が目的で、1と2はテストのために、です。 puttyで公開鍵を作ってOpenSSHで使う場合についてですが、「Export OpenSSH Key」ではなく、「save private key」というボタンを押して秘密鍵を作成し(拡張子がppkになる)、公開鍵は「Public key for pasting into OpenSSH authorized_keys file」という欄に表示された文字列を「全て選択」→「コピー」し、テキストエディタに貼り付け、「identity.pub」などの名前で保存していました。そうやって出来た公開鍵をローカルVineやホストVineにコピー&登録し、秘密鍵をTeraTermから使って上記接続テストを行いました。 SSHをデバッグモードで動作させて接続ログを取る方法についてですが、ホストVineのsshdを停止させてデバッグモード動作させることは避けたいです。というのは、ホストVineは遠距離にあり、sshdを停止させるとこちらからのSSHによるコントロールが効かなくなる(ターミナルが落ちる)からです。これじゃ話にならないかも知れませんが…。 ローカルVineのsshdをデバッグモードにして試してみました。ここに載せきれないほどの長いログが出来ましたが、こちらのVineマシンには元々鍵でログインできるので、問題はありません。

  • 回答No.7

#3です。 えっと、言葉足らずですいませんでした。 デバッグモードのsshdを起動した状態で、ローカルからsshしたときのログを取得してみてください。 やみくもに試行錯誤するより近道です。

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

質問者からのお礼

バックアップ作業に奔走されて遅くなりました。普段はディスプレイ無しの自宅サーバマシンにディスプレイを繋いだらIOエラーメッセージが山のように表示されていました。HDDが故障する予兆らしい。(T_T) さて、ローカル(自宅サーバ)側で教えて頂いた通りに実行してみました。 [root@hoge root]# /usr/sbin/sshd -D -e -d -d -d -f /etc/ssh/sshd_config debug2: load_server_config: filename /etc/ssh/sshd_config debug2: load_server_config: done config len = 212 debug2: parse_server_config: config /etc/ssh/sshd_config len 212 debug1: sshd version OpenSSH_3.9p1 debug1: private host key: #0 type 0 RSA1 debug3: Not a RSA1 key file /etc/ssh/ssh_host_rsa_key. debug1: read PEM private key done: type RSA debug1: private host key: #1 type 1 RSA debug3: Not a RSA1 key file /etc/ssh/ssh_host_dsa_key. debug1: read PEM private key done: type DSA debug1: private host key: #2 type 2 DSA debug1: rexec_argv[0]='/usr/sbin/sshd' debug1: rexec_argv[1]='-D' debug1: rexec_argv[2]='-e' debug1: rexec_argv[3]='-d' debug1: rexec_argv[4]='-d' debug1: rexec_argv[5]='-d' debug1: rexec_argv[6]='-f' debug1: rexec_argv[7]='/etc/ssh/sshd_config' debug2: fd 3 setting O_NONBLOCK debug1: Bind to port 22 on 0.0.0.0. Server listening on 0.0.0.0 port 22. socket: Address family not supported by protocol Generating 768 bit RSA key. RSA key generation complete. この最後の「RSA key~」の後に止まってしまいます。プロンプトに戻りません。10分ほど待ちましたが反応がないので、[ctrl]+[C]で抜け出しました。

  • 回答No.6

再びNo.2です。 私が紛らわしい書き方をしたばっかりに誤解を与えてしまって申し訳ないですが、 > それと、sshd_configのAuthorizedKeysFileで > $HOME/.ssh/authorized_keys > を指定しているのに、 ここの "$HOME/" は無い方が良いと思います。 つまり、 AuthorizedKeysFile .ssh/authorized_keys ↑が正しくて AuthorizedKeysFile $HOME/.ssh/authorized_keys ↑は正しくない ということ。 私の環境(パスワード無しでログインできる)で試しに$HOMEを付けてみると、「パスワード入れてね」状態になったので。。。 No.2で言いたかったのは、sshd_config内のファイル名と実ファイル名が異なっている場合、 mv $HOME/.ssh/間違ったファイル名 $HOME/.ssh/sshd_configのファイル名 と、実ファイル名をsshd_configに合わせた方が良いでしょう、ということです。 言葉足らずで申し訳ありませんでしたm(__)m

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

質問者からのお礼

いえいえ、ありがとうございました。こちらこそ、Linux強制電源切断リセットのショックから、この部分に関して返信し忘れていました。(^_^;) sshd_configのAuthorizedKeysFileは.ssh/authorized_keysとなっています。 $ cd /home/hikaly/ssh $ cat id_rsa.pub >> authorized_keys 他の公開鍵も同様に追加して $ chmod 600 authorized_keys …とやりましたので、私の踏んだ手順に間違いはないと思うんですが…未だにパスワード無しのログインが出来ません。 ローカルマシンへはパスワード無しでログインできるのに、ホストに出来ないのはどーして? 謎は深まるばかりです。 何はともあれ、ありがとうございました。

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

> 結果は同じ。 う~ん・・・・(´・ω・`)・・・・。 そうだなぁ・・・・。他には・・・・。・・・・。・・・・。 ・・・・まずありえないと思うが、sshd_configの中でPubkeyAuthentication yes となっているか確かめてみよう・・・・。  私はホスト側にVine Linux3.1を使っている(ローカルはWindowsのputty-jp)が、SSH2でDSAキーを使っているので、RSAキーは正確には分からない。お役に立てず申し訳ない。

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

質問者からのお礼

接続先(ホスト)のsshd_configでは # PubkeyAuthentication yes とコメントアウトされていました。 #を取って PubkeyAuthentication yes にしてsshdを再起動させてみましたが、ローカル側からの接続には変化はなく、相変わらず「パスワードを入れてね♪」と尋ねられます。 接続に使うキーがDSAでもRSAでもSSH1でもSSH2でも何でも良いのです。本来の目的は、rsync+sshのバックアップ作業をcronに登録して毎晩自動的に行わせることにあります。 で、ローカル側で $ ssh-keygen -t dsa -N "" $ ssh-keygen -t rsa -N "" $ ssh-keygen -t rsa1 -N "" を実行して出来た id_dsa.pub id_rsa.pub identity.pub の三つのファイルをホストの /home/hikaly/.ssh にコピー。 $ cat id_dsa.pub >> authorized_keys2 $ cat id_rsa.pub >> authorized_keys2 $ cat identity.pub >> authorized_key と立て続けに行いましたが、それでもローカル側からの接続時にパスワードを求められてしまいます。authorized_keyもauthorized_key2もパーミッションは600になっていますし…。 皆目見当が付かなくなってきました。この迷宮はクノッソス宮殿より深いんじゃないかという気がしてきています。(;´ρ`)

質問者からの補足

どこに補足するべきか迷いましたが、とりあえず最新の#5に付けておきます。 ローカルやホストの呼称が紛らわしいので、私の環境ももう少し丁寧に解説しておきます。 手元にはLinuxマシン(ローカル:接続元)とWindowsマシンがあり、両方とも同じ家庭内LANにぶら下がっています。ネット越しにホストマシン(某社のLinuxマシン)があります。ローカル&ホスト両方のLinuxマシンとも、WindowsのTeraTermProからSSHログインして操作しています。ですので、ローカルLinuxマシンは正確には「ローカル」ではないのですが、便宜上「ローカル」と呼ぶことにしています。 さて、WindowsからのTeraTermProによるSSHログインにはパスワードを使用していましたが、試しにこれを公開鍵暗号方式にしたらどうだろ?と考えて試してみました。 Windowsのputtygen.exeにて公開鍵と秘密鍵(SSH2-RSA形式)をつくり、公開鍵をローカルLinuxマシン(家庭内Linuxマシン)とホストLinuxマシン(某社Linuxマシン)の /home/hikaly/.ssh に転送、 $ cat id_rsa.pub >> authorized_keys を実行して登録しました。もちろん、両マシンとも $ chmod 600 authorized_keys しました。 次に、WinSCP3を起動し、ユーザ名にhikalyを入力。パスワード欄は空にして、先ほど作ったRSA鍵でログイン出来るかどうか試してみました。(TeraTermProはSSH2に未対応らしいのでWinSCP3を試してみました) 結果、ローカルLinuxマシンにはそのまま正常にログインできましたが、ホストLinuxマシンからはパスワードを入力するように言われました。 ローカルLinuxマシンもホストLinuxマシンも同じOSで動いているのに、この違いはどこから来るのでしょうか。両マシンのsshd_configを比べてみましたが、違っている箇所はありませんでした。 それと、sshd_configのAuthorizedKeysFileで $HOME/.ssh/authorized_keys を指定しているのに、 $ cat id_rsa.pub >> authorized_keys2 のようにauthorized_keys2というファイルに公開鍵情報を追加するのはおかしな話なので、すべて authorized_keys に追加しなおしました。 それでも、WinSCP3からの接続時に、ローカルLinuxマシンへは素直に接続できるのにホストLinuxマシンからはパスワードを求められるという現象に変わりはありません。 おかしいなぁ…。

  • 回答No.4

No.2です。 > ちなみに、sshd_config の PermitEmptyPasswords は no のままにしておいた方がいいです。 > 少なくとも今回の件には無関係です。 おっと。これは「空のパスワードを許可する」ですね。 たしかに無関係(というか危険?)ですので、私の回答は無視しちゃって下さい。 失礼しました。

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

質問者からのお礼

えーと、下記のお礼欄に書いたとおり、とりあえず試してみました。セキュリティとは別のところで恐ろしいことになりかけました。(^_^;) セキュリティ上も好ましくないようなので、noのままにしておきます。

  • 回答No.3

通常のsshdを停止し、以下のコマンドを実行してログを採取してください。 # /sshdのあるパス/sshd -D -e -d -d -d -f /configファイルのあるパス/sshd_config デバッグモードで動作するので山ほどログが出ます。 そこでエラーになってるとこを探してください。 それがあればもっと詳しいことがお答えできます。 追伸 ちなみに、sshd_config の PermitEmptyPasswords は no のままにしておいた方がいいです。 少なくとも今回の件には無関係です。

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

質問者からのお礼

実行してみました。以下のようなメッセージが返ってきました。 ----ここから [root@hoge ssh]# /usr/sbin/sshd -D -e -d -d -d -f /etc/ssh/sshd_config debug2: load_server_config: filename /etc/ssh/sshd_config debug2: load_server_config: done config len = 350 debug2: parse_server_config: config /etc/ssh/sshd_config len 350 debug1: sshd version OpenSSH_3.9p1 debug1: private host key: #0 type 0 RSA1 debug3: Not a RSA1 key file /etc/ssh/ssh_host_rsa_key. debug1: read PEM private key done: type RSA debug1: private host key: #1 type 1 RSA debug3: Not a RSA1 key file /etc/ssh/ssh_host_dsa_key. debug1: read PEM private key done: type DSA debug1: private host key: #2 type 2 DSA debug1: rexec_argv[0]='/usr/sbin/sshd' debug1: rexec_argv[1]='-D' debug1: rexec_argv[2]='-e' debug1: rexec_argv[3]='-d' debug1: rexec_argv[4]='-d' debug1: rexec_argv[5]='-d' debug1: rexec_argv[6]='-f' debug1: rexec_argv[7]='/etc/ssh/sshd_config' debug2: fd 3 setting O_NONBLOCK debug1: Bind to port 22 on 0.0.0.0. Server listening on 0.0.0.0 port 22. socket: Address family not supported by protocol Generating 768 bit RSA key. RSA key generation complete. ----ここまで /etc/ssh/ssh_host_dsa_key や /etc/ssh/ssh_host_rsa_key がRSA1の鍵じゃないよ!と怒られている気がします。 そこで、ググッて見つけたこのページを参考に鍵を作り直してみました。 http://www.tcn.zaq.ne.jp/gara_k/pc_unix/pc_unix_019.htm /usr/bin/ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key /usr/bin/ssh-keygen -t rsa1 -f /etc/ssh/ssh_host_rsa_key しかし、これでも接続元から ssh 接続先IP すると、 hikaly@接続先IP's password: とパスワードを求められることには変わりありませんでした。 うーん、何なんでしょう。パスワードログインは正常に出来るので、SSHが挙動不審な行動を取っているわけじゃないと思います。どこかに私の設定ミスがあると思うんですが…それが分からないのでもどかしいです。

  • 回答No.2

ホストマシン(接続先)の設定を確認してみましょう。 sshデーモンの設定ファイル(sshd_config)がどのファイルかご存知ですか? 私はVineLinuxは使用していないのですが、RedHatだと/etc/ssh/sshd_config です。 このファイルで確認すべきところが2箇所あります。 (1) PermitEmptyPasswords 多くの場合 No が設定されていますので、Yes に書き替えて下さい。コメントアウトされている場合は解除するのを忘れないように! (2) AuthorizedKeysFile authorized_keysのファイル名を指定します。ディストリビューションによっては書き替えられているものがあります。(古いディストリビューションに多いかな?) もし違うようなら合わせて下さい。sshd_configを書き替えてもいいし、$HOME/.ssh/authorized_keys の方をリネームしてもいいでしょう。リネームの方がいいかも。 あとは再起動を忘れずに行って下さい。

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

質問者からのお礼

返信ありがとうございます。 VineLinuxのsshd_configの在処も同じ場所です。 /etc/ssh/sshd_config AuthorizedKeysFileの設定は # .ssh/authorized_keys とコメントアウトされていたので、#を除去し、更に$HOMEを付けて次のようにしました。 $HOME/.ssh/authorized_keys /etc/rc.d/init.d/sshd restart で再起動をしてみましたが、ローカル側からの接続時にパスワードを求められることに変化はありません。 #3のdaling_2004さんからPermitEmptyPasswordsはnoの方が良いというコメントがつきましたが、いちおうYesにしてみました。 /etc/rc.d/init.d/sshd restart で再起動。 ん?何やら [failed] という文字が返ってきて再起動に失敗したらしい。Yesは全部小文字でyesじゃないとダメなんだろうか?と再びsshd_configを書き換えて再起動…した次の瞬間、SSHのコネクションが切れてホストマシンへのログインが不可能に!!Σ(´Д`lll) 実はホストマシンは遠いところにある某社のサーバで、こんな私がメンテナンス係をやっているんです。某社で働いているLinux門外漢の社員さんを電話で呼び出し、Linuxサーバ機(ホスト)はディスプレイが接続されていないマシンなので、電源ボタン長押しの強制リセットをしてもらいました。怖~。(><) ということで、私の書き方ミスなんですが、PermitEmptyPasswordsはnoに戻して触れないようにしました。(^_^;)

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

check point! ホストのマシンで、/home/hikaly/.sshのパーミッションは755になっているか。具体的には、 /home/hikaly>$ ls -ld .ssh drwxr-xr-x 2 hikaly hikaly 4096 May 23 08:46 .ssh/ などとなっていれば良い。 check point! ホストのマシンで、/home/hikaly/.ssh/authorized_keysのパーミッションは600になっているか。 check point! ローカルマシンで/home/hikaly/.ssh/id_rsaのパーミッションは600になっているか。 check point! sshのパラメータで秘密鍵を指定しているか。まぁ、大抵のsshコマンドで、SSH2を使う場合、id_dsaとid_rsaは自動で探してくれるので問題無いとは思うのだが・・・・。一応試してみて欲しい。ローカル側で $ ssh -i ~/.ssh/id_rsa ホストのIPアドレス だ。 まぁ、基本としては~/.sshは755、~/.ssh/*は600に変更すると良いだろう。 > ワケ分からなくなってきました。 君の説明では、後者だな。ssh-keygenを実行するのはローカル側の方が良いだろう。まぁ、安全ならどちらでも良いのだが、「id_dsa.pub(公開鍵)」はホスト側、「id_dsa(秘密鍵)」はローカル側だ。「サーバはインターネットに公開(パブリック)するものだ~」と覚えておこう。なんか年号早覚えみたい。いいくにつくろ~♪

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

質問者からのお礼

回答ありがとうございました! 早速check pointsを確認してみました パーミッションについて、そうなっていなかったものは変更しました。 ホスト /home/hikaly/.ssh → 755 ホスト /home/hikaly/.ssh/authorized_keys → 600 ローカル /home/hikaly/.ssh/id_rsa → 600 ここまで行ってSSHログインを試してみました。 ローカル側で、 $ ssh ホストIPアドレス hikaly@ホストIPアドレス's password: やっぱりパスワードを求められるので、 $ ssh -i ~/.ssh/id_rsa ホストのIPアドレス を実行してみましたが、結果は同じでした。 ホスト側の sshd_config に Protocol という項目があったので、これを 1, 2, 2.1, コメントアウトなどに変更してsshdを再起動させましたが、結果は同じ。 以前、ローカルマシンをRedHat8で動かしていたとき、同じ事をやろうとしてその時はすんなり動いたんですが…うーん、今回はわけがわかりません。(´・ω・`)

関連するQ&A

  • パスワード入力なしでsshログイン

    パスワード入力なしでsshログインしたいけど上手く行きません。 CentOS7のPCが2台(CentOS7-C, CentOS7-S)あります。 CentOS7-CからCentOS7-Sにパスワード入力なしでsshログイン(鍵認証でログイン)したいと思い、下記のサイトを参考にしながら悪戦苦闘しています。 パスワード入力なしでsshログイン(鍵認証でログイン) https://setting-tool.net/ssh-key-authorize <手順> クライアント側  ssh-keygen -t rsa でキー生成 サーバー側  クライアントで生成したキーを保存 <コマンド> ■前提 クライアント側 CentOS7-C 172.16.0.201 サーバー側 CentOS7-S 172.16.0.202 ■クライアント側設定 キーの発行 [root@CentOS7-C ~]# ssh-keygen -t rsa パーミッション設定 [root@CentOS7-C ~]# chmod 700 /root/.ssh [root@CentOS7-C ~]# chmod 600 /root/.ssh/* キーファイルをサーバー側に送る [root@CentOS7-C ~]# rsync -av -e ssh /root/.ssh root@172.16.0.202:/root/.ssh/from172.16.0.201 この時は手動でパスワード入力 ■サーバー側設定 クライアントからのキーファイルを別名で保存 [root@CentOS7-S ~]# cp /root/.ssh/from172.16.0.201/.ssh/id_rsa.pub /root/.ssh/authorized_keys キーファイルのパーミッション設定 [root@CentOS7-S ~]# chmod 600 /root/.ssh/authorized_keys ■クライアント側から接続 [root@CentOS7-C ~]# ssh root@172.16.0.202 Enter passphrase for key '/root/.ssh/id_rsa': 成功していればパスワードを聞かれずにログイン。 しかし、失敗しているので、パスワードを要求されている。 <考察> クライアントで生成したキーをサーバーにリモートコピーするだけなのに上手く行かない。 シンプルな話、 クライアントの /root/.ssh/id_rsa.pub と サーバーの /root/.ssh/authorized_keys が 同じであれば成立するというだけの話に思えるが、 クライアントでのcat /root/.ssh/id_rsa.pub と サーバーでのcat /root/.ssh/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).

  • DSA認証でパスワードを聞かれてしまう・・

    ssh の公開鍵認証がうまく行きません。 つぎのようにやりました。 #ssh-keygen -t dsa #scp /home/hoge/.ssh/id_dsa.pub hoge@remotehost:/home/hoge/ #ssh hoge@remotehost hoge@remotehost's password:  ←パスフレーズを入力します #cat id_dsa.pub >> /home/hoge/.ssh/authorized_keys このあと、 ●.ssh のモードを 700 ●authorized_keys のモードを 600 に設定します。 こうすると、次のログインでは、 だいたいのホストでは、パスフレーズ入力だけになって、 パスワードは聞かれません。 しかし、ホストによっては、 パスフレーズ入力+パスワード入力が必要になります。 なぜでしょうか? うまく行っていないホストは redhat です。

  • sshの公開鍵認証の基本的な仕組みについて

    ネットワークセキュリティの初心者です。教えてください。 sshの認証を使用して、サーバのファイルをクライアントにコピーしようとしています。 こちらで行った手順は以下のとおりです。(クラサバ共にSolaris) クライアントにて:  ・ssh-keygen -t rsa で秘密鍵(id_rsa)と公開鍵(id_rsa.pub)を作成。  ・scp id_rsa.pub hoge@192.168.10.10:/tmp でサーバに転送  (パスワードを入力すれば転送できた) サーバにて  ・cat /tmp/id_rsa.pub >> ~/.ssh/authorizedkeys で設定 上記にて、クライアントから scp testfile hoge@192.168.10.10:/tmpをしたところ、パスワード入力なしで無事転送することができました。 ここまではOKなのですが(前置き長くてすみません) この状態で、クライアントにて再度 ssh-keygenを実行してしまうと、またサーバのauthorizedkeysを設定しなおさなければならないのでしょうか? また、クライアントでのssh-keygen実行時に、id_rsa以外の名前で鍵を作成したときはどうなのでしょうか?(やはりサーバでの設定が必要?) そもそも鍵を作成する仕組みや鍵を管理している仕組みがわかっていれば簡単な問題かもしれませんが、どなたか教えてください。 こちらでは安易にテストする環境がないため、宜しくお願いします。

  • SSHの設定

    こんばんは。 ServerA ClientB 上記2台のマシンにSSH通信を設定したいと思います。 両方ともOSはRedhat EnerPrise Linux4です。 ClientBの作業: # ssh-keygen -t rsa # scp ~/.ssh/id_rsa.pub root@ServerA ⇒公開鍵をServerAにコピー ServerAの作業: # cd .ssh # touch authorized_key # chmod 600 authorized_keys # cat ~/id_rsa.pub >> authorized_keys 上記はrootユーザですが、仮に「oracle」など別のOSユーザで通信を する場合、ClientBとServerAの両方にOSユーザとして、 「oracle」を作成しておく必要はあるのでしょうか?。 アドバイスお願いします。

  • ssh の仕組み

    ssh の仕組みについて、よくわからない事があるので、よろしくお願いします。 (サーバの設定) ・/etc/ssh/sshd_config ファイルの編集をして、ルート権限ログインできないようにする。 ・デーモンを起動する。 (クライアントの設定) 1#ssh-keygen -t rsa 2#mv id_rsa.pub authorized_keys2 3#ssh hoge@192.168.x.x 4#rsa を入力 5#known_hostに関してのプロンプトに、yesで答える 6#パスワードを入力 上記の手順を踏んだとき、 まず、 (質問1:) 4のrsaを入力というのは、 相手側に自分の公開鍵を渡すと言う事でいいのでしょうか?? (質問2) これで、ログインした場合、サーバはその公開鍵を使って、暗号化→クライアントはそれを自分の秘密鍵(id_rsa)により、復号化。という解釈でいいのでしょうか? (質問3) 質問2の場合、クライアントから、サーバに送信するメッセージは暗号化されていないのでしょうか? (質問4) /etc/ssh/sshd_configの設定で、RSAAuthorized no にしてしまったら、 暗号化されないで、平分で、データが流れてしまうのでしょうか? (質問5) 結局のところ、SSHというものは、ユーザのパスワードを知っていたら、簡単に侵入ができるようなものなのでしょうか? (質問6) 上記の手順自体が全く間違っているのでしょうか? (質問7) ~/.ssh/known_hosts の中に入っているデータはいったいなんなんでしょうか??(相手の公開鍵??) /* 長くなりましたが、答えれる部分でいいので、よろしければお答えいただけないでしょうか。どうか、よろしくお願いします。

  • 外出先ホストからでも容易に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」 となってアクセス出来ません。 どうすればアクセス出来るようになるのでしょうか?

  • HP-UXにopensshでパスワード無しログイン

    ローカル(A)からリモート(B) にsshでパスワード無しの自動ログインをしようとしています. A:RedHat Linux 9, B:HP-UX(B.11.11) ○現状 ・Aにはrpmでopenssh-clients-3.5p1-11がインストールされています. ・Aにおいて,ssh-keygen -t dsa でパスフレーズ無しの鍵ペアを~/.ssh以下に作成 ・Aで作成した~/.ssh/id_dsa.pubをBの ~/.ssh/ 以下に authorized_keys としてコピー 関連ファイル,ディレクトリのパーミションはA,B共に以下のとおり. ~/.ssh/(700) ~/.ssh/id_dsa(600) ~/.ssh/id_dsa.pub(644) ~/.ssh/authorized_keys(644) Bには以下の手順でopenssl, openssh をインストール後,/usr/local/sbin/sshd でsshdを起動してあります.設定ファイルは変更していません. ・openssl-0.9.6c ./config && make && make test && make install ・openssh-3.7.1p2 ./configure && make && make install ○問題 AからBにsshで接続するとパスワードを聞かれてしまう. Bにopensshをインストールした際,何か,configure オプションや必要なライブラリが不足したりしているのでしょうか?

  • 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アクセスが出来ない

    Ubuntuにsshを入れて、公開鍵認証でwindowsからリモートアクセスしようとしましたができません。 Ubuntu側手順としては、 1. sudo ssh-keygen -t rsaで、パスフレーズ設定 2. sudo mv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keysで公開鍵設定 3. sudo mv /root/.ssh/id_rsa /media/usbでUSBメモリに秘密鍵をコピー そしてwindows側は、TeraTermを使って、 ユーザ名、パスフレーズ(上記で設定したもの)、秘密鍵(USBメモリのid_rsaファイルを指定)を設定してログイン(SSH2) といった、通常の操作をしております。パスワード認証にすると問題なくできましたので、ネットワークの問題ではなさそうです。 なお、ubuntu側で事前にやった事としては、 /etc/.ssh/sshd_configファイルのPermitRootLoginをyes->noに変更、PasswordAutheticationをyes->noに変更のみです。設定後にSSHサーバを再起動させています。 詳しい方がいましたら、よろしくお願い致します。