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

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

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

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

Q&A

解決済

3回答

77203閲覧

【CentOS7】ssh接続,秘密・公開鍵でのアクセスができない

nnahito

総合スコア2004

CentOS

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

1グッド

3クリップ

投稿2015/09/28 08:48

以前に【Cent OS7】公開鍵,秘密鍵認証で接続できないで質問をさせていただきましたが,
忙しく,間が空いてしまったため再度,変更点を含めご質問させてください.


SELinuxをdisabledにし,FireWallをきってもsshでCentOS7のサーバに接続できません.
Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
というエラーが出ます.(接続が弾かれている?)

ssh.allow,ssh.denyは両方共初期状態(空っぽ)になっています.

また,他のサーバPC(MacOS)にはssh接続ができるため,ポートの問題ではなさそうです.


以上で,現段階での簡単な設定の流れとなっています.
何かご存じの方がいらっしゃいましたら,ご教示いただければ幸いです.
よろしくお願いいたします.

ikuwow👍を押しています

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

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

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

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

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

guest

回答3

0

ベストアンサー

前回はタイムアウトでしたが、Permission denied になったということはルーターを経由して CentOS 7 の sshd までは接続できています。他の方からもご指摘がありますが、おそらく、鍵の問題だと思います。

切り分けとして、一時的にパスワード認証を有効にして root パスワードでログインできるか試したいところですが、CentOS 7 がインターネットからアクセスできるネットワークにあるのでしたら、やめておいた方がいいでしょう。

確認ですが、
CentOS 7 の /root/.ssh/authorized_keys に登録している公開鍵と対になっている秘密鍵(id_rsa)は sshクライアント側に存在するのですよね? その秘密鍵を sshコマンドの -i オプションで指定してもログインできませんでしょうか。

$ ssh -i id_rsa root@(CentOS 7 の IPアドレス) $ ssh -v -i id_rsa root@(CentOS 7 の IPアドレス) (-v でデバッグメッセージを表示)

投稿2015/09/28 15:35

TaichiYanagiya

総合スコア12146

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

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

nnahito

2015/09/29 06:57

ご回答有り難うございます. >CentOS 7 の /root/.ssh/authorized_keys に登録している公開鍵と対になっている秘密鍵(id_rsa)は sshクライアント側に存在するのですよね? はい,私のMacbookに秘密鍵,CentOS7に/root/.ssh/authorized_keysが存在しています.(なぜ「authorized_keys」と名前を変更しないといけないのかは未だ疑問ですが…^^;) ssh -i id_rsa root@(CentOS 7 の IPアドレス) も, ssh -i id_rsa USER_ID@(CentOS 7 の IPアドレス) も,「Permission denied (publickey,gssapi-keyex,gssapi-with-mic).」が表示されます. ご教示いただきました,-vオプションでは以下のようになっています. $ ssh -v -i ~/.ssh/id_rsa root@IP_ADDRESS OpenSSH_6.2p2, OSSLShim 0.9.8r 8 Dec 2011 debug1: Reading configuration data /etc/ssh_config debug1: /etc/ssh_config line 20: Applying options for * debug1: Connecting to IP_ADDRESS [IP_ADDRESS] port 22. debug1: Connection established. debug1: identity file /Users/USER_ID/.ssh/id_rsa type -1 debug1: identity file /Users/USER_ID/.ssh/id_rsa-cert type -1 debug1: Enabling compatibility mode for protocol 2.0 debug1: Local version string SSH-2.0-OpenSSH_6.2 debug1: Remote protocol version 2.0, remote software version OpenSSH_6.6.1 debug1: match: OpenSSH_6.6.1 pat OpenSSH* debug1: SSH2_MSG_KEXINIT sent debug1: SSH2_MSG_KEXINIT received debug1: kex: server->client aes128-ctr hmac-md5-etm@openssh.com none debug1: kex: client->server aes128-ctr hmac-md5-etm@openssh.com none debug1: SSH2_MSG_KEX_DH_GEX_REQUEST(1024<1024<8192) sent debug1: expecting SSH2_MSG_KEX_DH_GEX_GROUP debug1: SSH2_MSG_KEX_DH_GEX_INIT sent debug1: expecting SSH2_MSG_KEX_DH_GEX_REPLY debug1: Server host key: RSA 93:34:7b:c7:a2:99:ed:3d:24:4c:be:3d:a0:e5:a5:27 debug1: Host 'IP_ADDRESS' is known and matches the RSA host key. debug1: Found key in /Users/USER_ID/.ssh/known_hosts:10 debug1: ssh_rsa_verify: signature correct debug1: SSH2_MSG_NEWKEYS sent debug1: expecting SSH2_MSG_NEWKEYS debug1: SSH2_MSG_NEWKEYS received debug1: Roaming not allowed by server debug1: SSH2_MSG_SERVICE_REQUEST sent debug1: SSH2_MSG_SERVICE_ACCEPT received debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic debug1: Next authentication method: publickey debug1: Trying private key: /Users/USER_ID/.ssh/id_rsa debug1: read PEM private key done: type RSA debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic debug1: No more authentication methods to try. Permission denied (publickey,gssapi-keyex,gssapi-with-mic). これを見ても,慣れていないので読み方がわかりません…… 調べながら読んでいますが,いまいちまだピンと来ないので…… よろしければ,ポイントと合わせて教えていただけないでしょうか? よろしくお願いいたします.
TaichiYanagiya

2015/09/29 08:30 編集

情報ありがとうございます。 > debug1: Next authentication method: publickey > debug1: Trying private key: /Users/USER_ID/.ssh/id_rsa > debug1: read PEM private key done: type RSA 公開鍵認証が有効で、秘密鍵は読み込めていますが、認証に失敗しています。 秘密鍵と公開鍵が合っていないか、CentOS 7 側で authorized_keys を見ていないのか。 sshクライアント側で id_rsa から公開鍵を再作成して、CentOS 7 側の /root/.ssh/authorized_keys に含まれているかどうか確認してください。 [client]$ ssh-keygen -y -f ~/.ssh/id_rsa (標準出力に公開鍵が表示されます) また、CentOS 7 の /etc/ssh/sshd_config の設定を見せてもらえないでしょうか。 [centos7]# grep -v -E '(^$|^#)' /etc/ssh/sshd_config
nnahito

2015/09/30 06:54

コメントありがとうございます。 >sshクライアント側で id_rsa から公開鍵を再作成して、CentOS 7 側の /root/.ssh/authorized_keys に含まれているかどうか確認してください。 こちらは。。。 >[client]$ ssh-keygen -y -f ~/.ssh/id_rsa この内容をペーストすればよろしいでしょうか? >また、CentOS 7 の /etc/ssh/sshd_config の設定を見せてもらえないでしょうか 以下になります。 # grep -v -E '(^$|^#)' /etc/ssh/sshd_config HostKey /etc/ssh/ssh_host_rsa_key HostKey /etc/ssh/ssh_host_ecdsa_key HostKey /etc/ssh/ssh_host_ed25519_key SyslogFacility AUTHPRIV AuthorizedKeysFile .ssh/authorized_keys PermitEmptyPasswords no PasswordAuthentication no ChallengeResponseAuthentication no GSSAPIAuthentication yes GSSAPICleanupCredentials no UsePAM yes X11Forwarding yes UsePrivilegeSeparation sandbox # Default for new installations. 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 LANGUAGE AcceptEnv XMODIFIERS Subsystem sftp /usr/libexec/openssh/sftp-server よろしくお願い致します
TaichiYanagiya

2015/09/30 07:31

sshd_config は「AuthorizedKeysFile .ssh/authorized_keys」となっていますので、問題ないと思います。 sshクライアント側で "ssh-keygen -y -f ~/.ssh/id_rsa" で出力される「ssh-rsa(空白)文字列」が CentOS 7 側の /root/.ssh/authorized_keys に含まれているかどうか確認してください。
nnahito

2015/09/30 07:45

ご回答有り難うございます. クライアント側のid_rsaファイルの中身と, authorized_keysファイルの中身は完全一致しております. ただし,authorized_keysファイルの中身には,id_rsaファイルの中にはない, root@PC名 という物が末端に追記されていました. これは正解なのでしょうか? よろしくお願いいたします.
TaichiYanagiya

2015/09/30 08:38

最後の「root@PC名」はコメントなので、無視して結構です。「ssh-rsa(空白)文字列」が一致していればログインできるはずですが ... わかりません。 authorized_keys には複数の公開鍵を登録できますので、sshクライアント側で "ssh-keygen -y -f ~/.ssh/id_rsa" で出力される文字列(1行)を CentOS 7 側の /root/.ssh/authorized_keys に追加するとどうでしょうか。 あるいは、sshクライアント側で "ssh-keygen -t rsa" で鍵ペアを再作成して、id_rsa.pub の内容を CentOS 7 側の /root/.ssh/authorized_keys に追加するか。
nnahito

2015/10/01 07:08

ご回答有り難うございます. >sshクライアント側で "ssh-keygen -t rsa" で鍵ペアを再作成して、id_rsa.pub の内容を CentOS 7 側の /root/.ssh/authorized_keys に追加 こちらをやってみましたが,同じくエラーが発生しました. 一応,私の鍵の作成方法が正しいかを見ていただきたいと思い,以下に記載させていただきます. お手数をお掛けしますが,ご確認をお願いしてもよろしいでしょうか. (0)定義  ̄ ̄ ̄ ̄ ̄ ̄ ̄ サーバ(側):CentOS7で稼働しているサーバを指しています. クライアント:手元のMac0Sを指します.こちらからサーバへsshないし鍵接続を試みています. ※コマンドはroot権限を与えた端末ソフト(# su -)で行っております. (1)サーバ側で鍵を作成  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 以下のコマンドにより,サーバ側で公開鍵と秘密鍵を作成しました. # ssh-keygen -t rsa それにより, /root/.ssh/に,「id_rsa」と「id_rsa.pub」が作成されます. (2)id_rsa.pubの名称変更と,権限変更  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ id_rsa.pub を authorized_keys へ名称を変更し, # chown (サーバの自分のユーザ名) ~/.ssh/authorized_keys を実行しました. (3)id_rsaをクライアントへ移動  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ USBを使い,id_rsaをクライアント(Mac)の.sshフォルダに移動しました. (4)接続  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ クライアントのターミナルで, $ ssh -i id_rsa root@サーバIPアドレス と $ ssh -i id_rsa サーバの自分のユーザ名@サーバIPアドレス を実行しましたが, Permission denied (publickey,gssapi-keyex,gssapi-with-mic). が表示されます. 流れは以上です. 何か間違っている部分などありますでしょうか?
TaichiYanagiya

2015/10/01 07:32

(2) の chown ですが、クライアント側のユーザーとは関係なく、root でログインするのであれば、/root/.ssh/authorized_keys が存在し、オーナーは root である必要があります。一般ユーザーでログインするのであれば (ユーザーの$HOME)/.ssh/authorized_keys が存在し、オーナーはそのユーザーである必要があります。 また、通常は ssh-keygen はクライアントで実行し、公開鍵(id_rsa.pub)をログイン先のユーザーの$HOME/.ssh/authorized_keys に追加します。
TaichiYanagiya

2015/10/01 07:35

authorized_keys のオーナーが違っていれば、/var/log/secure に 「Authentication refused: bad ownership or modes for file /root/.ssh/authorized_keys」が記録されます。
nnahito

2015/10/01 12:27

ご回答有り難うございます。 無事解決いたしました!! キーとなったのは、TaichiYanagiya様の >一般ユーザーでログインするのであれば (ユーザーの$HOME)/.ssh/authorized_keys が存在し、オーナーはそのユーザーである必要があります。 です。 初心者の過ちとして、公開鍵、秘密鍵をroot権限(# su -)でずっと作成していたことが問題です。 端末ソフトで、ルート権限にログイン「せず」鍵を作成し、接続したところ見事アクセスすることができました。 なお、ルート権限には外部からはログインできない状態となっているため、全て弾かれていた模様です。(そりゃそうだ…) また、ホームディレクトリにpublic_htmlフォルダを作成するために、権限を777にしていたのも問題だったようで、権限を755にすると無事接続できました。 無知な私にここまで付き合っていただきありがとうございます。 これからも勉強し、精進させていただきたいと思います。 ありがとうございました。
guest

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

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

nnahito

2015/09/29 06:02

所有者を自身に変えても,同様のエラー(Permission denied (publickey,gssapi-keyex,gssapi-with-mic).)が出ました.
guest

0

sshの鍵認証方式では、authorized_keys だけでなく、ホームディレクトリ.sshディレクトリ秘密鍵等のパーミッションが適切でないと、セキュリティ上の理由で認証NGになります。
たとえば、下記ページをご参照ください。
sshの公開鍵認証がうまく行われない時の原因3個とその対処法

投稿2015/09/28 14:14

pi-chan

総合スコア5936

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

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

nnahito

2015/09/29 06:51

ご回答有り難うございます. ご紹介いただいたサイト通りの処理を行ったのですが,できませんでした…… `chmod go-w ~/`は,何を表しているのでしょうか…?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問