SSHのIDを永続的に追加するにはどうすればよいですか?


37

ssh-add <key>Webサーバーにsshする必要があるたびに実行する必要があります。IDを永続的に追加する方法はありますか。したがって、ログインごとにIDを追加し続ける必要はありませんか?

編集:キーは、クラウドサービスからダウンロードしたpemファイルです。

回答:


40

通常のようにキーを生成します:ssh-keygen、そしてそのキーをリモートサーバーに配置しssh-copy-idます。これにより、リモートサーバーの受け入れられたキーに同期されます。

ssh-keygen
ssh-copy-id user@host

パスワードの入力を求められ、.pubキーをリモートSSHサーバーにリンクするために必要なすべての手順が実行されます。

デフォルトでは、すべての.pubキーをリモートサーバーにコピーします。キーを作成したばかりの場合ssh-keygen、これは問題ではありません(1つしかないためです!)。ただし、複数のキーがある場合は、-iフラグを使用して特定のキーのみをコピーできます。

ssh-copy-id -i ~.ssh/key_name.pub user@host

key_name.pubキーの名前に置き換えます。


4
私のような人(または質問の質問者)がsshにさらされているだけで、Webサービスがキーを作成して私に与えるクラウドホストサーバー(私の場合はAWSサーバー)にアクセスする場合、この答えは難しい重要な背景調査を行わずに理解する。私は使ったことがないssh-keygenか、ssh-copy-id例えば、。一方、このような答えは、私の知識レベルを考えると、完全に明確で有用です。私のような無知な人々を助けるために、あなたの答えを微調整したいかどうかはあなた次第です。:)
マークアメリー

答えは、新しいキーを生成することを前提としています。既存のキーをキーリングに単純に登録したい場合はどうすればよいですか?
ドンキホーテ

@donquixote:以下の user626052による回答を参照してください。
naught101

7

次のコマンドでsshキーを生成できます:

ssh-keygen

次に、以下を使用してキーをサーバーにコピーできます。

ssh serveruser@servername "echo `cat ~/.ssh/id_dsa.pub` >> ~/.ssh/authorized_keys" 

これで、ウェブサーバーに自動的にログインできます


1
キーをサーバーにコピーするには、単にssh-copy-id -i ~/.ssh/id_dsa.pub serveruser@servernameまたはを~/.ssh/id_rsa.pubそれぞれ使用できます。実際、キーファイルにデフォルト名を使用する場合は、指定する必要さえありません。
カールステンシール

5

これをあなたの ~/.bashrc

eval $(ssh-agent)
ssh-add ~/.ssh/where_ever_privake_key_is 

3
これは、実際に質問に答える唯一の答えです。他のユーザーは、デフォルトの公開鍵を単一のターゲットサーバーに追加しているだけです。これは、サーバーのセットごとに2つ以上の個別のサーバーがある場合は迷惑です。
naught101

3

キーがパスワードなしであり、sshが識別時に検索しようとするファイル(~/.ssh/id_dsaまたは~/.ssh/id_rsa)の名前が付けられている場合は、エージェントに追加する必要はありません。

しかし。これらのファイルが盗まれる可能性がわずかでもある場合、このIDを使用しているサーバーへのアクセスをだれにも許可することになります。要するに、pwned。

私見、パスワードなしの秘密鍵は悪い習慣であり、~/.ssh/authorized_keys非常に制限されている環境でのみ使用されるべきです。


1
ログインしている間、ssh-agentは復号化された秘密鍵を保持できます。有効にすると、gnome-keyringはログインパスワードを使用することもできます。ああ、ssh-copy-idは公開鍵もサーバーにコピーできます。
フランク

2

ssh-addを実行し、次のような接続を行う短いシェルスクリプトを作成します。

ssh-add ~/.ssh/your-key
ssh user@remotehost

その後、1つのコマンドでホストにsshできます。


1

AWSの場合、pemキーをダウンロードして実行します:

ssh-add /path/to/pemfile.pem

私にとってはうまくいった、ubuntu 18.04。ソース、他に何も必要ありませんでした。

NB:ただし、これを行う前にアクセス許可を400に設定することが重要です。

chmod 400 /path/to/pemfile.pem

そうでない場合、エラーが発生します。

@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @
警告:保護されていないプライベートキーファイル!@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@「/home/toing_toing/blablabla.pem」のアクセス許可0664が開きすぎています。秘密鍵ファイルは他者からアクセスできないことが必要です。この秘密鍵は無視されます。



-2

Amazon Cloudについて話しているのですか?〜/ .bashrcで、環境変数を作成します。

# Amazon
export EC2_PRIVATE_KEY=$HOME/Keys/pk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem
export EC2_CERT=$HOME/Keys/cert-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.pem
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/

はい、クラウドについて説明しますが、これはインスタンスにsshするためのキーペアであり、api-toolsを使用するには上記の環境変数が必要です:)
theTuxRacer

OK。したがって、パスワードなしでRSAキーを生成します: 'ssh-keygen -t rsa'そして、生成された公開キー(〜/ .ssh / id_dsa.pub)をリモートサーバーの〜/ .ssh / authorized_keysファイルに連結します。これを達成するためのワンライナーが多くから与えられました。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.