ssh-copy-id
リモート マシンのユーザー名とパスワードがわかっている場合、公開 SSH キーを別のマシンの承認済みキーに格納する方法を理解しています。
逆はどうすれば可能でしょうか? リモート マシンの公開キー (公開キーなのでパスワードは不要) を取得し、それを自分の承認キー (これも自分のキーなのでパスワードは不要) に格納します。
答え1
ssh ${remote_host} cat .ssh/id_rsa.pub | tee -a $HOME/.ssh/authorized_keys
答え2
ここでは 2 つの異なるタイプの SSH キーが混在しています。構造は似ていますが、目的はまったく異なります。
公開鍵は、ユーザー・キー: それは公共つまり、秘密にしておく必要はない、それは出版された自動的に行うことは絶対にできません。Web ページにそれを掲載したい場合は、もちろん可能です。ただし、自分で行う必要があります。
一方、マシンごとのキーは、ホストキーこれらはログイン時に自動的に交換されるので、出版されたただし、ホスト キーはファイルには保存されません。代わりにauthorized_keys
に保存されますknown_hosts
。あるマシンのホスト キーを取得しても、誰にもアクセス権が付与されるわけではありません。SSH クライアントは、接続時にマシンが以前と同じであることを確認できるだけです。
システム管理者がHostbasedAuthentication
で有効にすることを選択し/etc/ssh/sshd_config
、リモートホストのホストキーがシステム全体のファイルにある場合、リモートホストの名前を に追加するか、またはを許可すること/etc/ssh/ssh_known_hosts
ができます。/etc/hosts.equiv
/etc/ssh/shosts.equiv
みんなリモート ホストの ユーザーは、パスワードを入力せずに、ローカル ホストの対応するアカウントにログオンできます。システム管理者が も に設定した場合IgnoreRhosts
、一般ユーザーは同様に、リモート ホストのホスト キーを に、ユーザー名@ホスト名を または に設定することでno
、特定のリモート ホストの特定のユーザーがパスワードなしでローカル ホストの自分のアカウントにアクセスできるようにすることができます。ただし、この認証方法はデフォルトでは無効になっています。~/.ssh/known_hosts
~/.rhosts
~/.shosts
(なぜ~/.shosts
と のような 2 つのファイル~/.rhosts
が必要なのでしょうか。これは、.rhosts
ファイルが古い暗号化されていないrsh
/ rlogin
/ rexec
/rcp
ツールで使用され、SSH はもともとその代替として設計されたためです。とツールの両方を介したアクセスを許可する場合は.rhosts
または を使用し、 SSH アクセスのみを許可する場合は または を使用します。)hosts.equiv
rsh
ssh
.shosts
shosts.equiv
答え3
ssh-keyscan を使用するか、不明なホストに接続するときに自動的にキーを known_hosts に追加します。手動で行う場合は、以下のコマンドを使用できます。
ssh-keyscan hostname >> ~/.ssh/known_hosts