私はsshが実際にどのように機能するかについてかなり混乱しており、これに関連するいくつかの質問をすでに行っていますが、XY問題の罠に陥っていると思います。
だから、私が欲しいのはこれです。クライアントからssh経由でいくつかのサーバーにログインして、それらのサーバーでテストを実行できるようにしたい。最初にユーザーとパスワードを使用してログインし、キーファイルをフェッチしてログアウトし、次にキーファイルを使用して再度ログインするような方法で行う必要があります。同じキーファイルを使用してすべてのサーバーにログインできるはずです。クライアントにキーファイルを保存することは許可されていないため、この方法で行うことが最も重要です。一時ファイルとしても使用しないので、なんとかしてRAMに保存する必要があります。しかし、それは後の(そしてすでに解決された)問題です。
では、これをどのように設定すればよいですか?キーをどこでどのように生成しますか?それらを他のサーバーに配布するにはどうすればよいですか?サーバーはCentOS7を実行しています。公開鍵ではなく秘密鍵をダウンロードする必要があると思います。あれは正しいですか?高いセキュリティが懸念事項です。
ワークステーションでssh-agentがまだ実行されていない場合は、起動します。
ssh-add -L
で確認してください;エラーメッセージCould not open a connection to your authentication agent.
は、エージェントを起動する必要があることを意味します。
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-yE5gDiNI3IqX/agent.13754; export SSH_AUTH_SOCK;
SSH_AGENT_PID=13755; export SSH_AGENT_PID;
echo Agent pid 13755;
印刷された指示に従って、環境をセットアップします。
$ SSH_AUTH_SOCK=/tmp/ssh-yE5gDiNI3IqX/agent.13754; export SSH_AUTH_SOCK;
$ SSH_AGENT_PID=13755; export SSH_AGENT_PID;
$ echo Agent pid 13755;
Agent pid 13755
SSH、エージェント転送を有効にして、(できればパスワードで保護された)秘密鍵を含む(できれば)ホストにパスワードを使用してログインします。
$ ssh -A Host.example.com
[email protected]'s password:
一度だけ:新しいキーペアを生成する必要があります; https://security.stackexchange.com/q/143442/77995 を参照してください
[[email protected] ~] $ ssh-keygen ***+options***
1回のみ(すべてのサーバーとアカウントに対して):このサーバーからその新しいキーペアのpublic_keyをコピーし、上の~/.ssh/authorized_keys
ファイルに追加する必要があります。アクセスしたいサーバー。 ssh-copy-idヘルパープログラムを使用して、それを行うことができます::
[[email protected] ~] $ ssh-copy-id localhost
そして、他のすべてのサーバーについて、そのキーを使用してログインするすべてのアカウントについて繰り返します(それらのサーバーが引き続きパスワードベースのログインをサポートしている場合は、別の方法で公開キーをコピーする必要があります)。
[[email protected] ~] $ ssh-copy-id [email protected]
ワークステーションを再起動してssh-agentを再起動するたびに:そのIDをキーリングに追加します
[[email protected] ~] $ ssh-add .ssh/id_rsa # or wherever the private key is stored
Identity added: .ssh/id_rsa (rsa-key-xxx)
およびログアウト:
[[email protected] ~] $ logout
また、次にワークステーションからsshにログインすると、エージェントに保存されているキーがキーベースの認証に使用され、パスワードは表示されません。プロンプト:
$ ssh Host.example.com