クライアントとサーバーで公開鍵と秘密鍵、構成ファイルを一致させようとしましたが、不一致を解決できませんでした。 SSH経由でサーバーに正常に接続できますしかし、不一致の状況。これは少し心配です。
どこに何が保存されているか正確にお見せしましょう。
クライアント:Macサーバー:Ubuntu(AWSでホスト)
私のローカルMacの/Users/sm/.sshディレクトリにあるファイル
ls -la
Sanjays-iMac:.ssh sm$ ls -la
total 24
drwx------ 5 sm staff 160 26 Nov 21:29 .
drwxr-xr-x+ 59 sm staff 1888 26 Nov 21:29 ..
-rw------- 1 sm staff 1696 26 Nov 20:49 id_rsa
-rw-r--r--@ 1 sm staff 451 26 Nov 20:50 id_rsa.pub
-rw-r--r-- 1 sm staff 1151 26 Nov 21:08 known_hosts
私のUbuntuサーバー上のファイル:
ubuntu@ip-172-31-30-19:~/.ssh$ ls -la
total 12
drwx------ 2 ubuntu ubuntu 4096 Nov 26 14:37 .
drwxr-xr-x 8 ubuntu ubuntu 4096 Oct 30 18:02 ..
-rw------- 1 ubuntu ubuntu 391 May 25 2018 authorized_keys
Ubuntuの現在の作業ディレクトリ:
ubuntu@ip-172-31-30-19:~/.ssh$ pwd
/home/ubuntu/.ssh
authorized_keys
サーバーのファイルコンテンツ:
ubuntu@ip-172-31-30-19:~/.ssh$ cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAA....0g1bMv+p11K8MDH sanjaydev
(個人情報保護のため内容が切り捨てられました。)
同様に、ローカルサーバーにKnown_hostsファイルがあります。
Sanjays-iMac:.ssh sm$ cat known_hosts
54.251.104.13 ecdsa-sha2-nistp256 AAAAE2VjZHNhLX..Xsb/RBY=
52.76.85.25 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTI....hAkfLOc5g=
ec2-13-127-241-121.ap-south-1.compute.amazonaws.com,13.127.241.121 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXN....fu5Co4vYB0=
ec2-13-232-81-251.ap-south-1.compute.amazonaws.com,13.232.81.251 ecdsa-sha2-nistp256 AAAAE2VjZHNhL....nhNcRyfu5Co4vYB0=
35.154.168.85 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNo....NcRyfu5Co4vYB0=
13.126.30.42 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTIt....NcRyfu5Co4vYB0=
(個人情報保護のため内容が切り捨てられました。)
今私の質問は次のとおりです。
何が何であるべきですか?
クライアントのauthorised_keys
公開鍵はサーバー上のファイルの項目の 1 つと一致しなければならず、サーバーの公開鍵はクライアント上のファイルの項目の 1 つと一致しなければならないとknown_hosts
思います。
残念ながら、手動で一致しようとすると、正確には一致しません(最初の数文字だけが一致します)。-i <pemfile>
コマンドラインでこれを指定しなくてもssh接続が継続されることは注目に値します。
答え1
キーには2つのタイプがあります。仕える人または所有者ユーザーにサーバーを識別するキーユーザーログインを許可するキーです。
サーバーの秘密ホストキーはに保存されます/etc/ssh/
。その公開鍵は、プロンプトの後に自動的にknown_hosts
クライアントに追加されます~/.ssh
。これらのキーの目的は、中間者(MITM)攻撃を検出することです。ssh ...
通常どおり入力中にホストキーが突然変更され、サーバーに何も変更されていない場合は、疑わしいはずです。
通常、ホストキーは気にする必要はなく、自動的に管理されます。
ユーザーキーを使用すると、パスワードを入力しなくても認証できます。ユーザーキーはクライアントによって管理されます。id_rsa.pub
公開鍵と秘密鍵で構成される鍵ペアを作成しましたid_rsa
。公開鍵は~/.ssh
使用されず、必要に応じて使用できるように保存されます。~/.ssh/authorized_keys
サーバー上のそのユーザーの公開鍵に公開鍵を手動で追加する必要があります。 1行に1つのキーが必要です。authorized_keys
ファイルが空の場合は、コピー(パスワードscp
とパスワードなど)でid_rsa.pub
十分です。
したがって、あなたの場合
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAA....0g1bMv+p11K8MDH sanjaydev
Ubuntuサーバー上のファイルのキーは、Macのキーauthorized_keys
と同じでなければなりません。id_rsa.pub
同じですが、まだログインできない場合は、別の問題があります。
答え2
キー形式の楽しみ
他の回答にリストしたコメントを見ると、深刻な形式の問題があるようです。
1つの標準化された手順を使用して生成された暗号化鍵が、他の標準化された手順によって生成された鍵と数学的に同じであることは事実です。ただし、特定の暗号化プロトコルには特定の形式のキーが必要です。
切り替えキー
- opensslからSSHキーへ
PEM形式で生成されopenssl
エクスポートされたキーは、このプログラムを使用してSSH形式に変換できますssh-keygen
。
ssh-keygen -i -m pem -f key.pem
- PEMのSSHキー
ssh-keygenを使用して生成されたキーはPEM形式に変換できます。
ssh-keygen -e -m pem -f id_rsa.pub
- PGPからSSHキーへ
GPGで生成されたPGPキーは、次のオプションを使用してSSH形式に変換できます--export-ssh-key
。
gpg --export-ssh-key <keyid>
主な場所
他の回答に記載されているように、リモートシステムにはssh形式のファイルに保存されている公開鍵が必要です~/.ssh/authorized_keys
。ローカルシステムでは、次の秘密鍵が必要です。
- id_rsaとして保存
~/.ssh
または
ssh -i
オプションで利用可能
または
- 以下を使用してSSHエージェントに追加する
ssh-add
または
sshcontrol
GPGを使用してSSHエージェントにファイルを追加する
公開鍵の比較
公開鍵を比較するには、鍵の形式が同じでなければなりません。そうでなければ、キーが数学的に同じオブジェクトでも同じように見えません。したがって、PEM形式を使用してSSH公開鍵を作成したことを示したため、その公開鍵がopenssl
サーバーファイルに保存されている公開鍵と異なる可能性があります~/.ssh/authorized_keys
。
PEM形式のキーは次のとおりです。
-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEAr/CvdghgkYT1Z38d
...
NlBcCYnrjvfFAj5HQydWc9CfP02rdtCIewIDAQAB
-----END RSA PUBLIC KEY-----
SSH公開鍵は次のとおりです。
ssh-rsa AAAAB3N...voZypjC/Y2UFwJie...t20Ih7
PGP公開鍵は次のとおりです。
-----BEGIN PGP PUBLIC KEY BLOCK-----
mQENBFN/ZjIBCADad3mv...
...
nE42ZvKt632ZAQ==
=EKbR
-----END PGP PUBLIC KEY BLOCK-----
したがって、同じ形式のキーを比較していることを確認してください。
答え3
サーバーの sshd キーknown_hosts
- in/etc/ssh/*pub
答え4
ファイルauthorized_keys
には内容を含む行が含まれ、ファイルid_rsa.pub
にknown_hosts
はサーバーのホストキーを含む行が必要です。 (サーバーは通常ホストキーを以下のファイルに保存します/etc/ssh/
。)
また、キーペアでなければならないid_rsa
という点で一致が必要ですが、手動で解放しない限り、ssh-keygenは常にキーペアを配置します。id_rsa.pub