web-dev-qa-db-ja.com

SSHキーを別のマシンにコピーする最も簡単な方法は?

私は家で怠け者で、自宅のマシンにパスワード認証を使用しています。キーベースの認証に移行する準備ができました。これを行う方法については、ウェブ上に多くのオプションがあります。たとえば、キャットしてからキーをかぶる、キーを直接かざすなどです。

キーをコピーする最も簡単で推奨される方法を探しています。Ubuntusshパッケージのどこかに便利なラッパーがあるといいのですが。

パスワードによるログインを停止する方法 についてはすでに知っています。

337
Jorge Castro

ssh-copy-idコマンド(openssh-clientパッケージに含まれ、デフォルトでインストールされる)は、まさにこれを行います:

ssh-copy-id [email protected]

デフォルトIDの公開鍵(他のIDには-i identity_fileを使用)をリモートホストにコピーします。

デフォルトのIDは「標準」のsshキーです。これは、~/.sshディレクトリ内の2つのファイル(公開キーと秘密キー)で構成され、通常、キーの種類に応じて、identityid_rsaid_dsaid_ecdsa、またはid_ed25519.pubと同じ)という名前が付けられます。複数のsshキーを作成しなかった場合、IDの指定について心配する必要はありません。ssh-copy-idは自動的にそれを選択します。

IDがない場合は、ssh-keygenツールを使用してIDを生成できます。

さらに、サーバーがデフォルトのポート(22)とは異なるポートを使用する場合、次のように引用符を使用する必要があります( source ):

ssh-copy-id "[email protected] -p <port-number>"
457
Marcel Stimberg

マルセルの答えが好きです。私はこのコマンドを知りませんでした。 SunのWebサイト で見つけたものを常に使用しています。

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'cat >> .ssh/authorized_keys && echo "Key copied"'

sshの力でシェルコードで達成できることの良い例であるため、ここにまだ投稿しようと思いました。しかし、ssh-copy-idを使用することは、間違いなく適切に行うためのより安全な方法です!

フォルダ.sshがまだ存在しない場合、上記のコマンドは失敗することに注意してください。さらに、ファイルを作成するときに、最小限の許可を設定することをお勧めします(基本的には、所有者のみの読み取り/書き込み)。より高度なコマンドを次に示します。

cat ~/.ssh/id_rsa.pub | ssh <user>@<hostname> 'umask 0077; mkdir -p .ssh; cat >> .ssh/authorized_keys && echo "Key copied"'
128
Huygens

グラフィカルな方法

  1. 開くアプリケーションパスワードとキーマイパーソナルキー.
  2. キーを選択し、[リモートセキュアシェルのキーを設定]をクリックします。

Set Up Computer for SSH Connection

29
ændrük

Ubuntuでは、Launchpadからキーを取得できます。

ssh-import-id [launchpad account name]

詳細

  1. Launchpadアカウントが必要です ログインまたはアカウントの作成
  2. ログイン後、SSHキーの横のボタンをクリックします:
  3. 公開キーファイルの内容をそのフィールドに貼り付けます(コメントを含む)。このようなキーは次のようになります。

    ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn
    

    ここで、ssh-rsaはキーがRSAキーであること、AAAAB3Nza .... UyDOFDqJpは実際のキー、lekensteynはコメントであることを示します。

  4. 公開鍵のインポートを押して鍵を保存します
  5. すべてがうまくいけば、キーはSSHキーの下にリストされるはずです:

パッケージssh-import-idは、リモートからアクセスする必要があるマシンにインストールする必要があります。このパッケージは、openssh-serverの推奨パッケージであるため、openssh-serverパッケージと一緒にインストールされます。 ssh-import-idがインストールされていることを確認した後、クライアントマシンで次を実行します。

ssh-import-id [launchpad account name]

これにより、HTTPSを介してLaunchpadサーバーから公開鍵がダウンロードされ、MITM攻撃から保護されます。

Ubuntu Lucid以前では、次の方法で同じことを実現できます。

wget https://launchpad.net/~[lp acount name]/+sshkeys -O - >> ~/.ssh/authorized_keys && echo >> ~/.ssh/authorized_keys

echoコマンドは、SSHキーを含む行の後に余分な改行を取得するために必要です。

18
Lekensteyn

カスタムポート用

ssh-copy-id -i "[email protected] -p2222"

-iスイッチのデフォルトは〜/ .ssh/id_rsa.pubです。別のキーが必要な場合は、-iの後にキーのパスを入力します

警告: -iを記述しなかった場合、〜/ .sshにあるすべてのキーがコピーされます

13
Omar S.

ssh-copy-idはまさにそれを行います。ここの他の回答のいくつかが不正確な情報を追加する理由はわかりません。ヘルプには以下が表示されます。

~$ ssh-copy-id -h
Usage: /usr/bin/ssh-copy-id [-h|-?|-f|-n] [-i [identity_file]] [-p port] [[-o <ssh -o options>] ...] [user@]hostname
    -f: force mode -- copy keys without trying to check if they are already installed
    -n: dry run    -- no keys are actually copied
    -h|-?: print this help

私はCentOS 7.6サーバーを搭載したUbuntu 18.04クライアントで次のことを試しましたが、それは魅力的なものでした。この例では、2222のカスタムポートを使用し、~/.ssh/path-to-rsa.pubで公開キーを指定しています。

$ ssh-copy-id -i ~/.ssh/path-to-rsa.pub -p 2222 [email protected]

コマンドを実行する前に、最後に-nスイッチを使用してドライランを実行し、コマンドが意図したとおりに機能することを確認しました。それを確認したら、-nスイッチなしで、上記のようにコマンドを再度実行しました。

0
isapir