質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.61%

  • CentOS

    2645questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

【Cent OS7】公開鍵,秘密鍵認証で接続できない

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,805

nnahito

score 1689

CentOS 7 不正アクセス対策
【Cent OS7】PHPでfwriteができない
【Cent OS7】ユーザディレクトリにWebサイトの公開フォルダを作りたい
で,皆様のお知恵をお借りし,なんとか目的の用途にあったサーバを建てることが出来ました.
しかし,再度不明な点が出てきましたので質問させていただきたいと思います.

公開鍵,秘密鍵を用いた外部PCからの接続ができません.

方法を御存知の方がいらっしゃいましたら,やり方,問題点,解決法を詳しくご教授いただけないでしょうか.
よろしくお願いいたします.

なお,接続にCyberduckというFTPソフトを利用しており,これにより接続を試みるとタイムアウトしているようです.
イメージ説明


以下,私が設定した設定項目を記載させていただきます.

CentOS 7 不正アクセス対策より,/etc/ssh/sshd_configの中身を,
Port 47382
PermitRootLogin no
PasswordAuthentication no

/etc/hosts.allowの中身を,
sshd : 127.0.0.1

/etc/hosts.denyの中身を,
sshd : all

と変更しました.


【Cent OS7】PHPでfwriteができない
【Cent OS7】ユーザディレクトリにWebサイトの公開フォルダを作りたいより,

/etc/selinux/configの中身を,
SELINUX=disabled

と変更しました.


Cent OSのFirewall([アプリケーション]>[諸ツール]>[ファイアウォール])は,publicの中の,
http

https

ssh
にチェックを入れています.


また,鍵については,CentOS で公開鍵暗号方式を使用した SSH ログイン設定より,
# su -
# ssh-keygen -t rsa
# mv ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
# chmod 600 ~/.ssh/authorized_keys
と,作成しました.

また,CentOSに公開鍵認証のSSH2で接続できない時より,
/etc/ssh/sshd_configの中身を,
PubkeyAuthentication yes
と書き換えています.


試みた動作は,PermitRootLogin noのコメントアウト(管理者権限のアカウントなので)
/etc/hosts.allowsshd : 127.0.0.1をコメントアウト
/etc/hosts.denysshd:allのコメントアウト
などです.

よろしくお願いいたします.
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

2点、変更が必要と思います。

(1) root ユーザーでログインするのですから、/etc/ssh/sshd_config で
PermitRootLogin yes
   または
PermitRootLogin without-password
とする必要があります。
変更した後、"systemctl reload sshd" で再読み込みしてください。

この時点で、localhost から root ユーザーで sftp コマンドでログインできるか確認します。
# sftp -i ~/.ssh/id_rsa root@127.0.0.1

(2) SSH/SFTP のポート番号を 47382 に変更しているので、Firewall で ssh(22) ではなく 47382 番ポートを開ける必要があります。
GUI での操作はわからないのですが、コマンドで設定する場合、以下のように設定します。
# cd /etc/firewalld/services/
# cp -p /usr/lib/firewalld/services/ssh.xml  ssh47382.xml
# sed -i 's|<short>SSH|<short>SSH47382|;s|port="22"|port="47382"|' ssh47382.xml
    (サービス名とポート番号を変更する。vi などのエディタで変更してもよい。)

# systemctl reload firewalld
# firewall-cmd --get-services
    (ssh47382 が表示されることを確認)
# firewall-cmd --add-service=ssh47382
# firewall-cmd --permanent --add-service=ssh47382
上記は新たにサービスを定義する方法ですが、他に、リッチルールやダイレクトルールで設定する方法もあります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/07/25 15:41 編集

    ご回答有難うございます.

    まず,
    PermitRootLogin without-password
    に設定を変更し,

    # sftp -i ~/.ssh/id_rsa root@127.0.0.1
    をしたところ,ポート22で接続をしようとしたらしく,接続が弾かれました.
    なので,一旦
    /etc/ssh/sshd_config
    の中を
    Port 22
    と修正し,再度
    # sftp -i ~/.ssh/id_rsa root@127.0.0.1
    とすると接続することが出来ました.

    確認できたので,Portを47382に再度戻し,

    # cd /etc/firewalld/services/
    # cp -p /usr/lib/firewalld/services/ssh.xml ssh47382.xml
    # sed -i 's|<short>SSH|<short>SSH47382|;s|port="22"|port="47382"|' ssh47382.xml

    をコピペで実行し,

    # systemctl reload firewalld
    # firewall-cmd --get-services
    (ssh47382 が表示されることを確認)
    では,長い英文の中にssh47382 が表示されるところを確認し,

    # firewall-cmd --add-service=ssh47382
    # firewall-cmd --permanent --add-service=ssh47382
    の2つはSUCCESSが表示されたため,ブラウザでまず接続しようとすると,
    httpエラーが出たので,Firewallを確認.

    httpとhttpsのチェックが外れていたので再度チェックを入れ,sshを確認すると,
    確かにssh47382という項目が追加され,チェックがついています.

    しかし,Cyberduckの方では以前とタイムアウトが続きます……
    この原因は何なのでしょうか.
    よろしければご教授いただけると幸に存じます.

    キャンセル

  • 2015/07/26 16:13

    失礼しました。sftp のオプションが不足していました。

    # sftp -P 47382 -i ~/.ssh/id_rsa root@127.0.0.1

    Cyberduck はわからないのですが、sftp コマンドは利用できませんでしょうか。

    # sftp -P 47382 -i ~/.ssh/id_rsa root@(IPアドレス)

    もし、接続できないようならネットワークの問題かもしれません。
    http(80),https(443)は許可されていて 47382 が許可されていないとか。

    キャンセル

  • 2015/07/29 03:04

    ご回答有難うございます。

    サーバとして機能させているPCで、
    # sftp -P 47382 -i ~/.ssh/id_rsa root@127.0.0.1
    を実行すると、接続出来ました。

    次に、手持ちのMacから
    $ sftp -P 47382 -i ~/.ssh/id_rsa root@IPアドレス
    すると、やはりタイムアウトします。

    /etc/hosts.denyの中身の,
    sshd : all
    に、#をつけても同上でした。

    他になにか、考えられることとその解決策はございますでしょうか…
    よろしくお願いいたします。

    キャンセル

  • 2015/07/29 10:10

    タイムアウトということは、TCP/IP 的に接続できていないと思われます。
    環境がわからないのですが、MAC と CentOS 7 は違うネットワークセグメントで、ルータを経由して接続しているのですよね?
    もう少し、切り分け、絞り込みが必要と思います。

    ・CentOS 7 と同じネットワークのホストから SFTP できるか
    ・一時的にポートを 22 に変更し(firewall-cmd でも ssh を許可し)、MAC から "sftp -P 22" できるか

    あと、/etc/hosts.allow には 127.0.0.1 の他に、MAC のネットワークセグメント(NAT される場合は変換後のIPアドレス)も許可する必要があります。今は全許可しておいて、SFTP 接続できた後で制限するといいと思います。

    キャンセル

  • 2015/07/29 19:37

    ご返信有難うございます.

    /etc/hosts.allow

    /etc/hosts.deny
    の中身を全てコメントアウトし,
    sftp -P 47382 -i ~/.ssh/id_rsa root@127.0.0.1
    を手持ちのMacbook(外部ネットワーク)と,研究室のiMac(サーバとの同一ネットワーク)で試したところ,iMacは無事接続することが出来ましたが,
    手持ちのMacbookでは接続できませんでした(タイムアウトになります)

    /etc/hosts.allowの全許可とは,
    /etc/hosts.allowの中身を全てコメントアウトでよろしいのでしょうか?

    キャンセル

  • 2015/07/29 21:00

    ネットワークの問題と思います。
    ルーターなどで 47382番ポートが許可されていないのではないでしょうか。

    全許可は /etc/hosts.allow, /etc/hosts.deny の両方をコメントアウトです。

    キャンセル

  • 2015/09/28 16:06

    ご回答有り難うございます.
    お返事大変遅れてしまい申し訳ありません.

    CentOS7を初期化し,ssh接続を許可(Port22)だけを行いましたが,それでも接続できませんでした.
    しかし,MacOS系のサーバにはssh(Port22)接続でができますので,ルータの問題では無いように思えます.
    他にどのような問題があげられるのでしょうか.

    キャンセル

  • 2015/09/30 16:54

    すいません,質問のページを切り替えます.
    →(【CentOS7】ssh接続,秘密・公開鍵でのアクセスができない)[https://teratail.com/questions/16932]

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.61%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • CentOS

    2645questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。