UNIX初心者のためのsftpで鍵認証を使ったデータ転送方法

このQ&Aのポイント
  • UNIX初心者のためのsftpで鍵認証を使ったデータ転送方法をご紹介します。
  • 鍵の生成と設定、sftpの実行とパスワードなしでの鍵認証について解説します。
  • 鍵認証によるデータ転送方法について、具体的な手順を紹介します。
回答を見る
  • ベストアンサー

UNIX初心者です。sftpで鍵認証を使いサーバAからサーバBにデータ

UNIX初心者です。sftpで鍵認証を使いサーバAからサーバBにデータ転送をしたいのですが、うまくいきません。 今までやった事は 1.鍵の生成 SSHクライアントのPuttygenでDSAの鍵 sftp.pubと sftp.ppkを生成しました。 sftp.ppkをサーバAの /home/user_a/.sshにアップロード sftp.pubをサーバBの /home/user_b/.sshにアップロードして %ssh-keygen -i -f sftp.pub >> ~/.ssh/authorized_keys2を実行しました。 各サーバの /.sshのパーミッション->フォルダ700 ファイル600に変更 2.sftpの実行 サーバAから %sftp -oIdentityFile=/home/user_a/.ssh/sftp user_b@server_b.hostname を実行すると普通にパスワードが求められてしまいます。 今つまづいているのは、パスワードなしで鍵認証したいが、パスワードが求められてしまう事です。どこが間違っているでしょうか? やり方を紹介しているURLなどご存知でしたら教えていただけますでしょうか。

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

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

なんというか… いろいろ手順が間違えているかと……。 >SSHクライアントのPuttygenでDSAの鍵 sftp.pubと sftp.ppkを生成しました。 >sftp.ppkをサーバAの /home/user_a/.sshにアップロード opensshが.ppkを認識できるでしょうか? Puttygenで「OpenSSH形式でエクスポート」できるので、エクスポートして下さい。 >%ssh-keygen -i -f sftp.pub >> ~/.ssh/authorized_keys2を実行しました。 パーミッションは? 664でのままだと、「リモート側で」エラーになるようです。 Permission denied (publickey,gssapi-with-mic). Couldn't read packet: Connection reset by peer と言われてしまいました。 >各サーバの /.sshのパーミッション->フォルダ700 ファイル600に変更 700でよい…かと。 >%sftp -oIdentityFile=/home/user_a/.ssh/sftp user_b@server_b.hostname 鍵ファイルの指定、正しいですか?

osama_vin_ladin
質問者

お礼

返事が大変遅れました。すみません。 只今、多忙で教えていただいたことがなかなか出来ませんでした。 たぶんあと二ヶ月後ぐらいにちょっと落ち着くので、その時実践してみます。 どうもありがとうございました。

関連するQ&A

  • sftpで、 公開鍵を指定できますか?

    sftpで、パスワードなしで他のサーバに接続したいのですが、 ssh の -iオプション(-i .ssh/id_dsa_pub)と同様に sftpでも公開鍵を指定する方法はありますでしょうか? 同じユーザー名だと、公開鍵を指定せず、 パスワードなしで接続できるのですが、 転送元と転送先でユーザー名が違う場合、公開鍵を 指定しないと接続できず困っています。

  • 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を起動してアクセスしてみたのですが、同じ結果でした。

  • 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鍵認証

    Aサーバーでsshで秘密鍵と公開鍵をを作成し、公開鍵のみをBサーバーへ置きました。 AサーバーからBサーバーへノンパスでログインはできたのですが、 BサーバーからAサーバーへのノンパスでのログインはできません。 (パスワードが聞かれてしまう) BサーバーからAサーバーへノンパスログイン(鍵認証)するにはどのようにすればよろしいでしょうか? ご存知の方、宜しくお願いします。

  • SFTPの鍵が自動で更新されることについて

    ※ サーバー管理のことはほとんど分かっていません。 ※ 質問の仕方自体があやふやだと思いますが、よろしくお願いいたします。 ホスティング業者でサーバを借り、rootアカウントで初めて sftp (ssh)接続をする際ですが、サーバ側の鍵をsftpソフトが受け入れます(ユーザに確認を求めますが)。結局 rootのアカウント名とパスワードだけで接続できてしまいます。 (1) この「鍵」の意義はなんでしょうか?あってもなくてもアカウントとパスだけで接続できてしまいますし・・・。 つぎに、この状態でしばらく sftpを利用していたのですが、ある日突然「このサーバの鍵は、以前認証した鍵と異なります。鍵の変更があったかサーバ管理者にお問い合わせください」とのようなメッセージが出ました。実際サーバ管理者に問い合わせることもできますが、彼自身よく分かっていないのか、あやふやです。 (2) そこでお聞きしたいのは、鍵が定期的に自動で刷新されることはあるのだろうか?ということです。もしあるなら参考URLや、検索キーワードを教えていただけると助かります。rootアカウントを閉じて別アカウントで公開鍵と秘密鍵を作った場合は、自動的な更新はないとのことです。これは素人の私でも「そりゃ接続できなくなってしまうし当然かな」とは思いますが、rootの場合はどうでしょう。 問題が頻発しサーバ管理者の話を信用しかねていたところ、sftpソフトが改ざんの可能性にも言及しており、少々焦っております。rootを早く閉じればよいのですが、こちらもゴタついていまして・・・。以上2点よろしくお願いいたします。

  • sftpコマンドで秘密鍵を指定する方法

    linuxのシェルでコマンドラインのsftpを利用して、リモートサーバに 接続する際にsshの秘密鍵を指定する方法を教えてください。 sshを利用する場合は ssh ユーザ名@ホスト -i ~/.ssh/秘密鍵 で秘密鍵を認識しますが、sftpだといろいろ調べましたが指定の仕方が わかりませんでした、よろしくお願いします。

  • 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以外の名前で鍵を作成したときはどうなのでしょうか?(やはりサーバでの設定が必要?) そもそも鍵を作成する仕組みや鍵を管理している仕組みがわかっていれば簡単な問題かもしれませんが、どなたか教えてください。 こちらでは安易にテストする環境がないため、宜しくお願いします。

  • Androidから自宅サーバーへのSFTP接続

    自宅でデータバックアップ用のサーバを立てています。 スマートフォンを使い始めたこともあり、SSHやSFTP経由でデータの授受を考えています。 使い慣れたファイルマネージャーであるアストロファイルマネージャーにSFTPサーバーへの 接続設定がありますが、接続できません。 ユーザー名の入力はありますが、パスワードを入力欄がありません。だから、公開鍵の情報をサーバー側に設定する方式かとも思ったのですが、鍵の作り方も書いていないし良く分かりません。 他のアプリ(ESファイルマネージャー)では、正常にデータの授受ができることは確認しました。 ESファイルマネージャーを使えばよいのですが、使いやすいのでアストロファイルマネージャーで接続できるならそちらを使いたいと考えてます。 ちなみに、外部のパソコンからはSFTPクライアントの接続もできますし、S鍵情報をサーバー側に設定してSSH通信によるrsyncコマンドによる自動バッチ処理でのデータ授受は実用できてますので、一通りSSHに関する設定は正しく稼動しているはずです。

  • サーバーAでcgiで認証し、サーバーBへ飛ばす

    サーバーAでcgiでユーザーIDとパスワードで認証し、サーバーBの一般からアクセスされたくないURLに飛ばす方法を教えてください。 サーバーB側で、どのような受け口を作ればよいのかで悩んでいます。 cgi(Perl)のスキルと、Apacheのスキル少々です。 ヒントだけでもいただけましたら後は勉強します。 (1),サーバーAで、cgi(Perl)を使用してユーザー認証します。 (2),認証OKの場合、cgiからサーバーBへリダイレクトします。 (3),サーバーBでは、上記の認証OKのアクセスだけを許可します。 サーバーBには、htmlやpdfなどを置いています。 これを、.htaccessのREFERER認証を使用して、サーバーAのREFERERを持ったものだけを 通す設定にしてみました。 この場合、最初に呼んだhtmlは表示されますが、そのhtmlからimgタグで呼んだ画像などは 表示されません。 また、そのhtmlから同じディレクトリ内の他のhtmlへ飛ぶこともできません。 特にREFERER認証に拘りません。何か良い方法はありませんでしょうか。

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