私は自宅で怠け者で、自宅のマシンにはパスワード認証を使用しています。私は、鍵ベースの認証に移行する準備ができています。これを行う方法については、cattingしてからキーをssh overする、キーを直接scpingする、など多くのオプションがウェブ上に存在します。
Ubuntuのsshパッケージのどこかに便利なラッパーがあることを期待して、私はキーをコピーオーバーする最も簡単で推奨される方法を探しています。
パスワードによるログインを停止する方法」1については、すでに承知しています。
ssh-copy-id` コマンド (openssh-client パッケージに含まれ、デフォルトでインストールされる) は、まさにこれを実行します。
ssh-copy-id [email protected]
は、デフォルトの ID の公開鍵をリモートホストにコピーします(他の ID の場合は -i identity_file
を使用します)。
デフォルトの ID は、あなたの標準的な ssh 鍵です。これは ~/.ssh
ディレクトリにある 2 つのファイル (公開鍵と秘密鍵) から成り、通常、鍵の種類に応じて identity
, id_rsa
, id_dsa
, id_ecdsa
または id_ed25519
(.pub
も同様) という名前が付けられています。複数の ssh 鍵を作成していない場合は、ID の指定に悩まされることはなく、 ssh-copy-id が自動的に選択します。
IDがない場合は、ツール ssh-keygen
を使ってIDを生成することができます。
また、サーバーがデフォルトのポート(22
)とは異なるポートを使用する場合は、このように引用符を使用する必要があります(source)。
ssh-copy-id "[email protected] -p <port-number>"
マルセルさんの回答が良いですね。私はこのコマンドを知りませんでした。私はずっとOracle web siteで見つけたものを使っていました。
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"'
Ubuntuでは、Launchpad :からキーを取得できます。
ssh-import-id [launchpad account name]
詳細:
1。 Launchpadアカウントが必要なので、[ログインまたはアカウントを作成](https://launchpad.net/+ login)。 2。 ログインした後、 SSHキー:の横にあるボタンをクリックします。 3。 公開鍵ファイルの内容をそのフィールドに貼り付けます(コメントを含む)。 このようなキーは次のようになります。
ssh-rsa AAAAB3Nza。 .... UyDOFDqJp lekensteyn。
ここで、「ssh-rsa」は、キーがRSAキー「AAAAB3Nza」であることを示します。 .... UyDOFDqJp`が実際のキーで、「lekensteyn」がコメントです。 4。 公開鍵をインポートを押して鍵を保存します。 5。 すべてがうまくいけば、キーは SSHキー:の下にリストされます。
リモートからアクセスする必要があるマシンにパッケージ「ssh-import-id」をインストールする必要があります。 このパッケージは、「opensh-server」の推奨パッケージであるため、「opensh-server」パッケージと一緒にインストールされます。 ssh-import-id
がインストールされていることを確認した後、クライアントマシンで、以下を実行します。
ssh-import-id [launchpad account name]
これにより、MITM攻撃からユーザーを保護するHTTPSを介してLaunchpadサーバーから公開鍵がダウンロードされます。
Ubuntu Lucid以前では、次の方法で同じことを達成できます。
wget https://launchpad.net/~[lp acount name]/+sshkeys -O - >> ~/.ssh/authorized_keys && echo >> ~/.ssh/authorized_keys
echo
コマンドは、SSHキーを使用して行の後に追加の改行を取得するために必要です。
カスタムポート用。
ssh-copy-id -i "[email protected] -p2222"
-iスイッチのデフォルトは〜/ .ssh / id_rsa.pubです。別のキーが必要な場合は、-iの後にキーのパスを置きます。
警告: -iを書き込まなかった場合は、〜/ .sshにあるすべてのキーがコピーされます。
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」スイッチなしでコマンドを再度実行しました。