私は家で怠け者で、自宅のマシンにパスワード認証を使用しています。キーベースの認証に移行する準備ができました。これを行う方法については、ウェブ上に多くのオプションがあります。たとえば、キャットしてからキーをかぶる、キーを直接かざすなどです。
キーをコピーする最も簡単で推奨される方法を探していますが、Ubuntu sshパッケージのどこかに便利なラッパーがありますか?
私はすでにパスワードログインを止める方法を知っています。
私は家で怠け者で、自宅のマシンにパスワード認証を使用しています。キーベースの認証に移行する準備ができました。これを行う方法については、ウェブ上に多くのオプションがあります。たとえば、キャットしてからキーをかぶる、キーを直接かざすなどです。
キーをコピーする最も簡単で推奨される方法を探していますが、Ubuntu sshパッケージのどこかに便利なラッパーがありますか?
私はすでにパスワードログインを止める方法を知っています。
回答:
ssh-copy-id
(中コマンドのopenssh-クライアントはデフォルトでインストールされたパッケージとは)まさにこのことを行います。
ssh-copy-id user@hostname.example.com
デフォルトのID(-i identity_file
他のIDに使用)の公開鍵をリモートホストにコピーします。
デフォルトのIDは「標準」のsshキーです。それはあなたの内の2つのファイル(公開鍵と秘密鍵)で構成され~/.ssh
たディレクトリ、通常は名前のidentity
、id_rsa
、id_dsa
、id_ecdsa
またはid_ed25519
(および同じ.pub
)、キーの種類に応じて。複数のsshキーを作成しなかった場合は、IDの指定について心配する必要はありません。ssh-copy-idは自動的にそれを選択します。
IDがない場合は、ツールを使用してIDを生成できますssh-keygen
。
さらに、サーバーがデフォルトのポート(22
)とは異なるポートを使用する場合、次のように引用符を使用する必要があります(source):
ssh-copy-id "user@hostname.example.com -p <port-number>"
ssh-copy-id "user@host -p 6842"
brew install ssh-copy-id
では、コマンドを実行してから実行できます。
マルセルの答えが好きです。私はこのコマンドを知りませんでした。私は常に、Oracle 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"'
.ssh
がリモート側に存在しない場合に備えて、更新されたコマンドで投稿を更新しました。
cat
は必須ではありません-通常の入力リダイレクトで十分です。たとえば< ~/.ssh/id_rsa.pub | ssh ...
seahorse
です。
Ubuntuでは、Launchpadからキーを取得できます。
ssh-import-id [launchpad account name]
詳細:
公開キーファイルの内容をそのフィールドに貼り付けます(コメントを含む)。このようなキーは次のようになります。
ssh-rsa AAAAB3Nza .... UyDOFDqJp lekensteyn
ここでssh-rsa
、キーがRSAキーでAAAAB3Nza .... UyDOFDqJp
あり、実際のキーでlekensteyn
あり、コメントであることを示します。
パッケージ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キーを含む行の後に余分な改行を取得するために必要です。
カスタムポート用
ssh-copy-id -i "user@hostname.example.com -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 myusername@hostname.tld
コマンドを実行する前-n
に、最後にスイッチを実際に使用してドライランを実行し、コマンドが意図したとおりに機能することを確認しました。確認したら、上記のように、-n
スイッチなしでコマンドを再度実行しました。