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

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

新規登録して質問してみよう
ただいま回答率
85.40%
CentOS

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

Q&A

解決済

1回答

5938閲覧

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

nnahito

総合スコア2006

CentOS

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

0グッド

0クリップ

投稿2015/07/25 03:55

編集2015/07/25 03:58

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のコメントアウト
などです.

よろしくお願いいたします.

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

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 05:37

TaichiYanagiya

総合スコア12166

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nnahito

2015/07/25 06:42 編集

ご回答有難うございます. まず, 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の方では以前とタイムアウトが続きます…… この原因は何なのでしょうか. よろしければご教授いただけると幸に存じます.
TaichiYanagiya

2015/07/26 07: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 が許可されていないとか。
nnahito

2015/07/28 18: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 に、#をつけても同上でした。 他になにか、考えられることとその解決策はございますでしょうか… よろしくお願いいたします。
TaichiYanagiya

2015/07/29 01: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 接続できた後で制限するといいと思います。
nnahito

2015/07/29 10: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の中身を全てコメントアウトでよろしいのでしょうか?
TaichiYanagiya

2015/07/29 12:00

ネットワークの問題と思います。 ルーターなどで 47382番ポートが許可されていないのではないでしょうか。 全許可は /etc/hosts.allow, /etc/hosts.deny の両方をコメントアウトです。
nnahito

2015/09/28 07:06

ご回答有り難うございます. お返事大変遅れてしまい申し訳ありません. CentOS7を初期化し,ssh接続を許可(Port22)だけを行いましたが,それでも接続できませんでした. しかし,MacOS系のサーバにはssh(Port22)接続でができますので,ルータの問題では無いように思えます. 他にどのような問題があげられるのでしょうか.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.40%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問